4

このブログ投稿に従って、Azure ストレージ テーブルを作成しています: http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx

asp.net webform web_role で正常に動作します。

asp.net mvc を Web ロールとして使用して同じプロジェクトを再作成しましたが、アプリケーションの起動時に常に失敗します。この行:

StorageAccountInfo アカウント = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();

アカウント共有キーの取得に常に失敗するようです。

グローバル asax アプリケーションの開始から default.aspx に行を移動すると、完全に正常に動作します。

  • Webフォームと比較して、azure asp.net mvcでストレージテーブルを初期化することに違いはありますか?
  • アプリケーションの起動時に azure appsettings を取得できないのはなぜですか?

  • これは、イベント ビューアーからのエラー コール スタックです。

    例外情報:
        例外の種類: HttpException
        例外メッセージ: アカウント キーが指定されていません!
    
    要請情報:
        リクエスト URL: http://127.0.0.1:5100/do.__rd_runtime_init__?shutdownEvent=1B671B93FD-4153-4834-9D5D-595EFC6C19EE1D
        リクエストパス: /do.__rd_runtime_init__
        ユーザーホストアドレス: 127.0.0.1
        ユーザー:  
        認証済み: False
        認証タイプ:  
        スレッドアカウント名: *****
    
    スレッド情報:
        スレッド ID: 6
        スレッドアカウント名: *****
        なりすまし: False
        スタック トレース: System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode (HttpContext コンテキスト、HttpApplication アプリ) で
       System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS (IntPtr appContext、HttpContext コンテキスト、MethodInfo[] ハンドラー) で
       System.Web.HttpApplication.InitSpecial (HttpApplicationState 状態、MethodInfo[] ハンドラー、IntPtr appContext、HttpContext コンテキスト) で
       System.Web.HttpApplicationFactory.GetSpecialApplicationInstance (IntPtr appContext、HttpContext コンテキスト) で
       System.Web.HttpApplicationFactory.GetPipelineApplicationInstance (IntPtr appContext、HttpContext コンテキスト) で
       System.Web.Hosting.PipelineRuntime.InitializeApplication (IntPtr appContext) で
    
    4

    2 に答える 2

    2

    http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspxで「備考」を確認してください。

    Windows Azure ファブリックは、IIS 7.0 を統合モードで実行します。統合モードでは、Application_Start イベントは、要求コンテキストへのアクセス、または Windows Azure SDK ランタイム API によって提供される RoleManager クラスのメンバーへのアクセスをサポートしません。要求コンテキストにアクセスする、または Application_Start イベントから RoleManager クラスのメソッドを呼び出す ASP.NET アプリケーションを作成している場合は、代わりに Application_BeginRequest イベントで初期化するように変更する必要があります。

    Application_BeginRequest イベントの使用方法を示す例については、Windows Azure SDK に同梱されている PersonalWebSite サンプルを参照してください。

    于 2009-06-13T19:23:57.637 に答える
    0

    使用する場合:

    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"/>
    
    于 2011-03-31T13:24:05.470 に答える