【问题标题】:GetRawBody() is returning empty for REST requestsGetRawBody() 为 REST 请求返回空
【发布时间】:2016-04-12 21:40:14
【问题描述】:

我正在尝试使用 servicerunner 编写我的 ServiceStack 网络服务的原始数据。这适用于 SOAP 请求,但对于 REST 请求 GetRawBody() 返回为空。

public override void BeforeEachRequest(IRequest requestContext, T request)
    {
        Logger.Write(requestContext.GetRawBody());
    }

【问题讨论】:

标签: servicestack


【解决方案1】:

默认情况下,Web 服务器仅提供只转发请求流,您可以告诉 ServiceStack 跳过反序列化,以便您可以通过 implementing IRequiresRequestStream on your Request DTO 从请求流中读取:

public class MyRequest : IRequiresRequestStream
{
    Stream RequestStream { get; set; }
}

这将注入请求流而不是反序列化请求 DTO,例如:

public class object Any(MyRequest request)
{
    var requestBody = request.RequestStream.ReadFully().FromUtf8Bytes();
}

否则,如果您希望 ServiceStack 反序列化请求,并且您想稍后自己重新读取请求正文,则需要使用预请求过滤器将 ServiceStack 告知 buffer the Request

appHost.PreRequestFilters.Add((httpReq, httpRes) => {
    httpReq.UseBufferedStream = true;
});

【讨论】:

    猜你喜欢
    • 2016-07-05
    • 2018-03-15
    • 2015-11-20
    • 1970-01-01
    • 2021-07-08
    • 2017-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多