我尝试在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();
}
}
我在这里缺少什么?
答案 0 :(得分:1)
是的,我发现这也很奇怪,但也许是我不了解HttpRequestStream的本质。
无论如何......我设法使用以下方法获取文件:
var stream = Request.Files[0].InputStream;
然后你可以处理那个流。
似乎可以上传多个文件,但我想这很难包含在REST框架中。