ASP.NET API
ASP.NET: .NET Framework 中一套用于生成 Web 应用程序和 XML Web 服务的技术。API: 支持两个应用程序相互交互的软件中介。
10 个问题
我正在使用 ASP.NET MVC 的 WebAPI 开发一个 Web 服务,该服务将提供二进制文件(主要是.cab
和.exe
文件)。 以下控制器方法似乎有效,这意味着它返回一个文件,但它将内容类型设置为application/json
:
public HttpResponseMessage<Stream> Post(string version, string environment, string filetype)
{
var path = @"C:\Temp\test.exe";
var stream = new FileStream(path, FileMode.Open);
return new HttpResponseMessage<Stream>(stream, new MediaTypeHeaderValue("application/octet-stream"));
}
有没有更好的方法?
你好,
尝试使用简单的HttpResponseMessage,并将其Content
属性设置为 StreamContent
代码示例:
public HttpResponseMessage Post(string version, string environment,
string filetype)
{
var path = @"C:\Temp\test.exe";
HttpResponseMessage result = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new FileStream(path, FileMode.Open, FileAccess.Read);
result.Content = new StreamContent(stream);
result.Content.Headers.ContentType =
new MediaTypeHeaderValue("application/octet-stream");
return result;
}
使用stream时需要注意以下几点:
stream.Dispose()
,因为Web API 在处理控制器方法的结果以将数据发送回客户端时仍然需要能够访问它。 因此,不要使用 using (var stream = …)
块。 Web API 将为您处理流。MemoryStream
时),请确保stream.Seek(0, SeekOrigin.Begin)
; 或设置 stream.Position = 0
;如果答案是正确的解决方案,请单击“接受答案”并请投赞成票。如果您对此答案有其他疑问,请点击“评论”。
注意:如果您想接收此线程的相关电子邮件通知,请按照我们文档中的步骤启用电子邮件通知。
最好的问候