我正在使用ASP.NET MVC的新的WebAPI的网络服务,将成为了二进制文件,主要是.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"));
}
Run Code Online (Sandbox Code Playgroud)
有一个更好的方法吗?
我正在使用ASP.NET Web API.
我想从API(API生成)下载带有C#的PDF.
我可以让API返回byte[]
吗?对于C#应用程序,我可以这样做:
byte[] pdf = client.DownloadData("urlToAPI");?
Run Code Online (Sandbox Code Playgroud)
和
File.WriteAllBytes()?
Run Code Online (Sandbox Code Playgroud) 我一直在尝试使用 ASP.NET Web API 返回图像。我见过很多例子,但我不断遇到问题。
\n\n在搜索解决方案后,大多数示例建议使用 HttpResponseMessage 并正确设置 Content 和 Content-Type 标头。例如,在以下帖子中:\n WebApi:如何处理图像 ASP .Net Web API 将图像下载为二进制文件
\n\n这就是我现在正在做的事情:
\n\n [System.Web.Http.HttpGet]\n [ActionName("ConvertHTMLToImage")]\n public HttpResponseMessage ConvertHTMLToImage(string htmlString)\n {\n var path = @"C:\\temp\\mona-lisa.png";\n var response = Request.CreateResponse(HttpStatusCode.OK);\n var fileStream = new FileStream(path, FileMode.Open, FileAccess.Read);\n response.Content = new StreamContent(fileStream);\n response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/png");\n return response;\n }\n
Run Code Online (Sandbox Code Playgroud)\n\n我得到的结果好坏参半。当我访问该资源的 URL 时,我遇到了 Chrome(此网页不可用)、Firefox(连接已重置)和 Safari(Safari 无法打开该页面)的问题。令我惊讶的是,它在 IE 中运行得很好。我还可以使用 Fiddler 中的作曲家成功查看图像。如果我保持 Fiddler 打开并使用 Chrome/Firefox/Safari 访问资源,我会看到 504 错误。不确定这意味着什么,我不记得以前见过该错误类型。
\n\n我还注意到调试器中的浏览器无法正常工作时出现一些奇怪的行为。如果我从 IE 和 Fiddler 调用 ConvertHTMLToImage,我会看到它在断点处停止一次,然后图像成功返回给客户端。在 Chrome/Firefox/Safari …