1

我试图读取 ServiceStack 服务中的原始输入流。我已将 DTO 标记为IRequiresRequestStream,并且要读取的代码会执行,但内容始终显示为空白。

在 IE9 中使用调试模式,我可以看到原始 HttpRequest 包含传递的 POST 中的文本。

这是我来自最小测试服务的代码,仅用于显示对内容和查询的阅读:

[Route("/qtest")]
public class QueryTestRequest : IReturn<string>, IRequiresRequestStream
{
    public Stream RequestStream { get; set; }
}

public class QueryTestService : Service
{
    public string Any(QueryTestRequest request)
    {
        var r = new StringBuilder(); 
        r.Append("<p>This is the query test service:");

        r.AppendFormat("<p>Parameter value={0}", base.Request.QueryString["value"]);

        var postStream = new StreamReader(request.RequestStream);
        var postContent = postStream.ReadToEnd();           

        r.AppendFormat("<p>Raw Content={0}", postContent);

        return r.ToString();
    }
}

我在这里想念什么?

4

1 回答 1

1

是的,我也觉得这很奇怪,但也许是我不了解 HttpRequestStream 的本质。

无论如何...我设法使用以下方法获取文件:

var stream = Request.Files[0].InputStream;

然后你可以处理那个流。

似乎可以上传多个文件,但我想这很难包装到 REST 框架中。

于 2013-04-30T12:44:09.577 回答