Вопрос

Я следую этому сообщению в блоге, чтобы создать таблицу хранилища Azure:http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx

Он отлично работает с asp.net webform web_role.

Я заново создал тот же проект, используя asp.net mvc в качестве веб-роли, и при запуске приложения всегда происходит сбой.эта линия:

StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();

кажется, всегда не удается получить общий ключ учетной записи.

Если я перенесу строку из global asax application start в default.aspx, она будет работать отлично.

  • Есть ли какая-либо разница в инициализации таблицы хранилища в Azure asp.net mvc по сравнению с webform?
  • Почему я не могу получить настройки приложений Azure при запуске приложения?

  • Это стек вызовов ошибок из средства просмотра событий

    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)
    
    Это было полезно?

    Решение

    Ознакомьтесь с "замечаниями" по адресу http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx:

    Windows Azure Fabric запускает IIS 7.0 в интегрированном режиме.В интегрированном режиме событие Application_Start не поддерживает доступ к контексту запроса или к членам класса RoleManager, предоставляемого API среды выполнения Windows Azure SDK.Если вы пишете 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"/>
    
    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top