ローカルでもAzure Appサービス内でも、Azure Storage C#クライアントをMVCアプリケーション内で使用しています。私は、コンソールとMVC5の両方のアプリケーションで次のようにクライアントを使用しています:Azure Storage C#クライアントはMVCアプリケーションでは403を禁止しますが、コンソールアプリケーションでは200を返します
var account = CloudStorageAccount.Parse("connectionstring");
var client = account.CreateCloudBlobClient();
var container = client.GetContainerReference("containername");
var blob = container.GetBlockBlobReference("somefile");
var exists = blob.Exists();
私はすべてのパラメータにまったく同じ値を使用しています。 Exists
コールはコンソールアプリで正常に動作しますが、MVC5アプリケーションに例外を返します:
[WebException: The remote server returned an error: (403) Forbidden.]
を、それは次のリクエスト/レスポンスを示しフィドラーを使用して、クライアントによって生成両方の要求を検査した後。
コンソールアプリ要求:
HEAD <url> HTTP/1.1
User-Agent: Azure-Storage/8.3.0 (.NET CLR 4.0.30319.42000; Win32NT 6.2.9200.0)
x-ms-version: 2017-04-17
x-ms-client-request-id: 6d51e6c2-fb3f-48fd-ade5-2031d593b553
x-ms-date: Thu, 10 Aug 2017 07:35:52 GMT
Authorization: SharedKey <creds>
Host: <host>
Connection: Keep-Alive
コンソールアプリの応答:
HTTP/1.1 200 OK
Content-Length: 3992
Content-Type: image/gif
Content-MD5: Ehfh+rzNrbvTgIEh9gQgfw==
Last-Modified: Tue, 27 Jun 2017 13:48:41 GMT
Accept-Ranges: bytes
ETag: "0x8D4BD6338BAED01"
Server: Windows-Azure-Blob/1.0 Microsoft-HTTPAPI/2.0
x-ms-request-id: d7b7e17e-0001-003e-7bab-11987d000000
x-ms-version: 2017-04-17
x-ms-lease-status: unlocked
x-ms-lease-state: available
x-ms-blob-type: BlockBlob
x-ms-server-encrypted: false
Date: Thu, 10 Aug 2017 07:35:51 GMT
MVC5要求:
HEAD <url> HTTP/1.1
User-Agent: Azure-Storage/8.3.0 (.NET CLR 4.0.30319.42000; Win32NT 10.0.15063.0)
x-ms-version: 2017-04-17
x-ms-client-request-id: 138d3edc-a3b1-48c6-b268-6b878a4c01fd
x-ms-date: Thu, 10 Aug 2017 07:33:46 GMT
Authorization: SharedKey <creds>
Host: <host>
x-ms-request-root-id: ef1cb29-49a22f2b3f72be30
x-ms-request-id: |ef1cb29-49a22f2b3f72be30.
Request-Id: |ef1cb29-49a22f2b3f72be30.
MVC5応答:
HTTP/1.1 403 Server failed to authenticate the request. Make sure the value of Authorization header is formed correctly including the signature.
Transfer-Encoding: chunked
Server: Microsoft-HTTPAPI/2.0
x-ms-request-id: 106917c2-0001-00b8-2aaa-11ccaf000000
Date: Thu, 10 Aug 2017 07:33:45 GMT
両方のアプリケーションが.NET 4.5.2をターゲットにしており、WindowsAzure.Storage
パッケージのバージョン8.3.0を使用しています。私もバージョン8.2.1と6.2.1を試しましたが、同じ問題が発生しました。
コードと値がまったく同じ場合、これら2つのアプリケーションが異なるHEAD要求を生成するのはなぜですか?
私が気づいた興味深いのは、MVCリクエストヘッダに 'x-ms-request-root-id'と' x-ms-request-id'が存在することです。彼らはどこから来るのか知っていますか? –
@GauravMantri明らかに彼らはApplication Insightsから来ています、私の答えを見てください。 – Snelbinder