Pergunta

Eu estou seguindo este blog para criar uma tabela de armazenamento Azure: http: //blogs.msdn. com / jnak / Arquivo / 2008/10/28 / passo a passo-simples-table-storage.aspx

Ele funciona muito bem em um asp.net webform web_role.

Eu re-criou o mesmo projeto usando asp.net MVC como o papel da web, e é sempre falhando no arranque da aplicação. esta linha:

StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();

parecem sempre falham recebendo a chave compartilhada conta.

Se eu mover a linha do início aplicação asax global para default.aspx, ele funciona perfeitamente bem.

  • Existe alguma diferença em inicializar uma tabela de armazenamento em Azure asp.net MVC em comparação com webform?
  • Por que não consigo obter os appsettings azuis no arranque da aplicação?

  • Esta é a pilha de chamadas de erro do Visualizador de eventos

    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)
    
    Foi útil?

    Solução

    Confira as "observações" em http: //msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx :

    O Windows Azure tecido corre o IIS 7.0 no modo integrado. em integrado modo, o evento Application_Start faz não suporta o acesso ao pedido contexto ou aos membros da classe RoleManager fornecido pelo Windows Azure SDK tempo de execução API. Se vocês está escrevendo uma aplicação ASP.NET que acessa o contexto de solicitação ou chama métodos da classe RoleManager a partir do evento Application_Start, você deve modificá-lo para inicializar no evento Application_BeginRequest em seu lugar.

    Para um exemplo que mostra como usar o evento Application_BeginRequest, veja o exemplo PersonalWebSite que vem com o Windows Azure SDK.

    Outras dicas

    Se você usar:

    StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
    

    Normalmente, as informações da conta é dada no arquivo 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"/>
    
    Licenciado em: CC-BY-SA com atribuição
    Não afiliado a StackOverflow
    scroll top