ServiceStack 错误调用 Request.GetRawBody();
ServiceStack error calling Request.GetRawBody();
我试图在服务堆栈的服务调用中访问底层 JSON 对象(请求主体)。我希望这样做的原因是创建现有服务的 PATCH 版本,它只会尝试更新 JSON 中的字段。看起来很简单:
public object Patch(AddUpdateContactRequest request)
{
var json = this.Request.GetRawBody();
var keysToUpdate = JsonSerializer.DeserializeFromString<Dictionary<string, string>>(json);
return Put(request);
}
但是,当调用 GetRawBody() 时(当服务堆栈调用 .NET 核心时),我从服务堆栈中得到一个异常:
Message: "Could not load type
'Microsoft.AspNetCore.Http.Internal.BufferingHelper' from assembly
'Microsoft.AspNetCore.Http, Version=3.0.0.0, Culture=neutral,
PublicKeyToken=adb9793829ddae60'."
Source: "ServiceStack"
StackTrace: " at ServiceStack.Host.NetCore.NetCoreRequest.GetRawBody() in
C:\BuildAgent\work81147c480f4a2f\src\ServiceStack\Host\NetCore\NetCoreRequest.cs:line
211"
TargetSite: {System.String GetRawBody()}
TypeName: "Microsoft.AspNetCore.Http.Internal.BufferingHelper"
它似乎引用了 Microsoft.AspNetCore.Http 的 3.0 版本,但是这个版本没有命名空间 Microsoft.AspNetCore.Http.Internal.BufferingHelper。看起来像是版本不匹配的问题,但我似乎无法让它工作。我在本地看不到任何 dll 版本冲突,我隐式引用了最新版本的 .NET 核心并安装了最新的 SDK/hosting 包。
如果这是 .NET Core 3.0,则为 due to a breaking change in .NET Core 3.0 which has been resolved in the latest v5.7.1 packages on MyGet。
我试图在服务堆栈的服务调用中访问底层 JSON 对象(请求主体)。我希望这样做的原因是创建现有服务的 PATCH 版本,它只会尝试更新 JSON 中的字段。看起来很简单:
public object Patch(AddUpdateContactRequest request)
{
var json = this.Request.GetRawBody();
var keysToUpdate = JsonSerializer.DeserializeFromString<Dictionary<string, string>>(json);
return Put(request);
}
但是,当调用 GetRawBody() 时(当服务堆栈调用 .NET 核心时),我从服务堆栈中得到一个异常:
Message: "Could not load type 'Microsoft.AspNetCore.Http.Internal.BufferingHelper' from assembly 'Microsoft.AspNetCore.Http, Version=3.0.0.0, Culture=neutral, PublicKeyToken=adb9793829ddae60'." Source: "ServiceStack" StackTrace: " at ServiceStack.Host.NetCore.NetCoreRequest.GetRawBody() in C:\BuildAgent\work81147c480f4a2f\src\ServiceStack\Host\NetCore\NetCoreRequest.cs:line 211" TargetSite: {System.String GetRawBody()} TypeName: "Microsoft.AspNetCore.Http.Internal.BufferingHelper"
它似乎引用了 Microsoft.AspNetCore.Http 的 3.0 版本,但是这个版本没有命名空间 Microsoft.AspNetCore.Http.Internal.BufferingHelper。看起来像是版本不匹配的问题,但我似乎无法让它工作。我在本地看不到任何 dll 版本冲突,我隐式引用了最新版本的 .NET 核心并安装了最新的 SDK/hosting 包。
如果这是 .NET Core 3.0,则为 due to a breaking change in .NET Core 3.0 which has been resolved in the latest v5.7.1 packages on MyGet。