1

Classic ASP を使用して Azure Blob Storage にファイルをアップロードしようとしています (選択の余地はありません!)。ただし、MSXML2.ServerXMLHTTP を使用してコンテナーの内容を一覧表示することはできますが、ブロブの作成に失敗しています。PDFファイルをアップロードするために使用する必要があるため、BlockBlobを使用しています。

認証キーを正しく作成できていないと思います。Classic ASP VBScript で認証キーを作成するコード サンプルはありますか? 以下のようなものがありますが、クラシック ASP でキーを生成する方法がわかりません。

' replace with your account's settings
' setup the URL
baseUrl = "https://<myaccount>.blob.core.windows.net"

Set http = Server.CreateObject("MSXML2.ServerXMLHTTP")
PathUrl = baseUrl & "/test/myblob"
' setup the request and authorization
http.open "PUT", PathUrl , false  
'How do I generate this key from the headers and path using HMAC-SHA256 and my prim/sec account key
http.setRequestHeader "Authorization", "SharedKey <myaccount>:?????"
http.setRequestHeader "Date", "2011-6-16 9:22"
http.setRequestHeader "x-ms-date", "2011-06-16 9:22"
http.setRequestHeader "x-ms-version", "2009-09-19"
http.setRequestHeader "Content-Length", "11"
http.setRequestHeader "x-ms-blob-type","BlockBlob"
http.setRequestHeader  "Content-Type", "text/plain; charset=UTF-8"

postData = "hello world"

' send the POST data
http.send postData

' optionally write out the response if you need to check if it worked
 Response.Write http.responseText

AuthenticationFailedServer failed to authenticate the request というエラーが表示されます。Authorization ヘッダーの値が、署名を含めて正しく形成されていることを確認してください。

ありがとう

グレアム

4

2 に答える 2

3

ここで定義されているアルゴリズムと同等のものを実装する必要があります。

http://msdn.microsoft.com/en-us/library/dd179428.aspx

ただし、可能であれば、私がお勧めするより簡単な方法があります。ASPアプリケーションに.NETアプリケーションに対してASMX(またはWCFと同等の呼び出し)を行わせて、短い寿命(たとえば、有効期限が10分)の共有アクセス署名(SAS)を返します。アップロードするPDFの名前を渡すだけで、書き込みアクセス権を持つ署名が計算されます。署名を取得したら、何も計算することを心配せずに、署名を単純に置くことができます。PDFが非常に大きい(> 64MB)場合は、ブロックへの分割を心配する必要があるという問題が発生しますが、小さいPDFの場合は、心配することなくSASで非常に簡単なPUT操作を実行できます。

このためのコードは簡単です:

var blobName = "foo.pdf"; //taken from ASP app

var blob = container.GetBlobReference(blobName);

var sas = blob.GetSharedAccessSignature(new SharedAccessPolicy()
{
    Permissions = SharedAccessPermissions.Write,
    SharedAccessExpiryTime = DateTime.AddMinutes(10)
});

この場合のコンテナは、ユーザーがアップロードする場所です。'sas'変数には、送信する必要のあるクエリ文字列部分が含まれます。追加する必要があるだけです(例:blob.Uri.AbsoluteUri + sas)。

このソリューションでは、ASPアプリはWindows Azure BLOBストレージと詳細を認識せず、.NETアプリのみがキーまたはSASの計算方法を知る必要があります。

于 2011-06-16T13:35:46.340 に答える
-1

単純なC#アプリケーションを使用して、ファイルをAzureストレージにアップロードできます。詳細については、リンクを参照してください。< http://tuvian.wordpress.com/2011/06/24/how-to-upload-blob-to-azure-using-asp-net-tool-for-upload-files-to-azure-using-asp -netc / >

于 2011-06-28T12:45:20.697 に答える