C# Web API 2.0 HttpResponseMessage返回类型返回HTTP401
正在标头中传递正确的JWT令牌。上面的代码工作得很好。但是,如果我取消注释注释掉的响应行,并将返回类型更改为HttpResponseMessage,它将给我一个HTTP 401未经授权的错误,即使当返回类型为string时,我可以点击此控制器中的所有其他方法,包括此方法,并获得HTTP 200响应 有什么想法吗C# Web API 2.0 HttpResponseMessage返回类型返回HTTP401,c#,asp.net-web-api,owin,azure-storage-blobs,jwt,C#,Asp.net Web Api,Owin,Azure Storage Blobs,Jwt,正在标头中传递正确的JWT令牌。上面的代码工作得很好。但是,如果我取消注释注释掉的响应行,并将返回类型更改为HttpResponseMessage,它将给我一个HTTP 401未经授权的错误,即使当返回类型为string时,我可以点击此控制器中的所有其他方法,包括此方法,并获得HTTP 200响应 有什么想法吗 我试图注释掉其中的一些部分,它基本上是导致HTTP 401的返回类型。如果我返回HttpResponseMessage,我会得到401。如果我让代码的其余部分保持原样,只返回一个字符串,
我试图注释掉其中的一些部分,它基本上是导致HTTP 401的返回类型。如果我返回HttpResponseMessage,我会得到401。如果我让代码的其余部分保持原样,只返回一个字符串,它就会工作。我被难住了 什么是_cloudBlobContainer?是否已正确设置?_cloudBlobContainer是在构造函数中设置的。这是Azure Blob存储API的一部分,用于从Azure Blob存储获取二进制对象。是的,它设置正确。它的功能很好。不会引发异常,并且我能够通过blob存储中的项目标识符正确地获取这些项目。是的,但是是否在CloudBlobContainer对象中设置了存储凭据?
[Authorize]
public string GetBlob(Guid id)
{
var blockBlob = _cloudBlobContainer.GetBlockBlobReference(id.ToString());
blockBlob.FetchAttributes();
long length = blockBlob.Properties.Length;
var byteArray = new byte[length];
blockBlob.DownloadToByteArray(byteArray, 0);
var response = new HttpResponseMessage(HttpStatusCode.OK);
var stream = new MemoryStream(byteArray);
response.Content = new StreamContent(stream);
response.Content.Headers.ContentType = new MediaTypeHeaderValue("image/jpeg");
//return response;
return "Test";
}