Asp.net mvc 在MVC Web API中设置导致多个请求的ContentType
我在Web API中有一个简单的GetFile方法,它返回一个以二进制形式存储在数据库中的文件。文件可以是图像、视频或录音,因此我根据扩展名设置内容类型:Asp.net mvc 在MVC Web API中设置导致多个请求的ContentType,asp.net-mvc,rest,http,Asp.net Mvc,Rest,Http,我在Web API中有一个简单的GetFile方法,它返回一个以二进制形式存储在数据库中的文件。文件可以是图像、视频或录音,因此我根据扩展名设置内容类型: [System.Web.Mvc.HttpGet] public HttpResponseMessage GetFile(Guid Id) { HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
[System.Web.Mvc.HttpGet]
public HttpResponseMessage GetFile(Guid Id)
{
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
var file = db.Files.Where<NonConformityFile>(item => item.Id == Id).FirstOrDefault<NonConformityFile>();
byte[] imgData = file.FileContents;
MemoryStream ms = new MemoryStream(imgData);
response.Content = new StreamContent(ms);
if (file.FileExtension == "png")
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
else if (file.FileExtension == "mp4")
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("video/mp4");
else if (file.FileExtension == "caf")
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("audio/x-caf");
else
throw new HttpResponseException(Request.CreateErrorResponse(HttpStatusCode.UnsupportedMediaType, file.FileExtension + " is not a supported file format"));
return response;
}
并查看该方法是否运行了两次。我看不到这种行为的逻辑,这导致了我的身份验证出现问题。进一步调查表明,这实际上可能是Postman REST客户端的问题。在Fiddler和AdvancedRESTClient中重放请求时,我没有发现问题。这太可惜了,因为在我看来邮递员是最好的REST客户。。。
[System.Web.Mvc.HttpGet]
public HttpResponseMessage GetFile()
{
HttpResponseMessage response = new HttpResponseMessage(HttpStatusCode.OK);
response.Content = new StreamContent(new MemoryStream());
response.Content.Headers.ContentType = new System.Net.Http.Headers.MediaTypeHeaderValue("image/png");
return response;
}