asp.net MVC での Azure ストレージ テーブルの作成
-
13-09-2019 - |
質問
私はこのブログ投稿に従って Azure ストレージ テーブルを作成しています。http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx
asp.net Webフォームのweb_roleでは正常に動作します。
Web ロールとして asp.net mvc を使用して同じプロジェクトを再作成しましたが、アプリケーションの起動時に常に失敗します。この行:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
アカウント共有キーの取得に常に失敗するようです。
グローバル asax アプリケーションの開始からdefault.aspx に行を移動すると、完全に正常に動作します。
これはイベント ビューアからのエラー コール スタックです
Exception information: Exception type: HttpException Exception message: No account key specified! Request information: Request URL: http://127.0.0.1:5100/do.__rd_runtime_init__?shutdownEvent=1B671B93FD-4153-4834-9D5D-595EFC6C19EE1D Request path: /do.__rd_runtime_init__ User host address: 127.0.0.1 User: Is authenticated: False Authentication Type: Thread account name: ***** Thread information: Thread ID: 6 Thread account name: ***** Is impersonating: False Stack trace: at System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) at System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) at System.Web.HttpApplication.InitSpecial(HttpApplicationState state, MethodInfo[] handlers, IntPtr appContext, HttpContext context) at System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext, HttpContext context) at System.Web.HttpApplicationFactory.GetPipelineApplicationInstance(IntPtr appContext, HttpContext context) at System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
解決
のWindows Azureのファブリックは、IIS 7.0を実行します 統合モードインチ統合で モード、のApplication_Startイベントはありません 要求へのアクセスをサポートしていません コンテキストまたはのメンバーに RoleManagerクラスで提供 WindowsのAzureのSDKランタイムAPI。もし、あんたが ASP.NETアプリケーションを作成します それは、要求コンテキストにアクセスしますか、 RoleManagerクラスのメソッドを呼び出します Application_Startイベントから、あなた で初期化するために、それを変更する必要があります Application_BeginRequestイベント その代わります。
を使用する方法を示し例えば Application_BeginRequestイベント、 PersonalWebSiteサンプルを参照してください WindowsのAzureのSDKに付属ます。
他のヒント
あなたが使用している場合:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
通常のアカウント情報がWeb.confファイルで指定されます。
<add key="TableStorageEndpoint" value="http://127.0.0.1:10002/devstoreaccount1" />
<add key="AccountName" value="devstoreaccount1" />
<add key="AccountSharedKey" value="YOUR ACCOUNT KEY PROVIDED BY AZURE"/>