2

我正在编写一个服务来处理使用文件的 mutlipart/formdata 编码从浏览器发送的请求。

我看到我可以通过使用接口 IRequiresRequestStream 装饰我的请求 DTO 并提供一个名为 RequestStream 的属性来访问原始输入流。但这样做似乎意味着我无法填写任何请求属性,即使是 URL 中包含的那些。例如,我将请求的路由设置如下

[Route("/document/{Type}/{Id}", "GET,PUT,POST/DELETE")]
public class UploadFileRequest : IReturn<UploadFileResponse>, IRequiresRequestStream
{
    public long Id { get; set; }
    public string Type { get; set; }

    public Stream RequestStream { get; set; }
}

当我向此服务发送 PUT 请求时,我看到 RequestStream 属性已按我的意愿设置,但 Id 和 Type 属性为空。 https://groups.google.com/forum/#!msg/servicestack/l9qFvZNbuT0/dwyRQKBhmlMJ似乎表明这会发生。

有什么方法可以获取路由参数并仍然访问请求流?即使这样,我似乎也需要处理表单数据的解析,但希望我能找到一个库来轻松完成这项工作。

4

1 回答 1

2

在 ServiceStack 中结合 URL 和 POST 变量实际上有助于解决这个问题。Request 对象上的属性 FormData 和 Files 可从服务中访问,它们包含所需的信息。所以 DTO 不包含 RequestStream 属性或实现 IRequiresRequestStream 接口

于 2013-10-09T19:30:19.527 回答