ServiceStack:原始请求流

时间:2013-04-14 22:58:46

标签: c# servicestack

我尝试在ServiceStack Service中读取原始输入流。我用IRequiresRequestStream标记了DTO,并且要执行的代码执行,但内容始终显示为空白。

在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();
    }
}

我在这里缺少什么?

1 个答案:

答案 0 :(得分:1)

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

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

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

然后你可以处理那个流。

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