C# Web API 2.0 HttpResponseMessage返回类型返回HTTP401

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。如果我让代码的其余部分保持原样,只返回一个字符串,

正在标头中传递正确的JWT令牌。上面的代码工作得很好。但是,如果我取消注释注释掉的响应行,并将返回类型更改为HttpResponseMessage,它将给我一个HTTP 401未经授权的错误,即使当返回类型为string时,我可以点击此控制器中的所有其他方法,包括此方法,并获得HTTP 200响应

有什么想法吗


我试图注释掉其中的一些部分,它基本上是导致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";
     }