La creazione di tabella di archiviazione Azure su asp.net MVC
-
13-09-2019 - |
Domanda
Sto seguendo questo post del blog per creare una tabella di memorizzazione azzurro: http: //blogs.msdn. com / jnak / archive / 2008/10/28 / walkthrough-semplici-tavolo-storage.aspx
Funziona bene su un web_role asp.net moduli elettronici.
Ho ricreato lo stesso progetto utilizzando asp.net mvc come il ruolo web, ed è sempre in mancanza all'avvio dell'applicazione. questa linea:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
sembrano non riuscire sempre ottenere l'account chiave condivisa.
Se sposto la linea dall'applicazione ASax globale inizia a Default.aspx, funziona perfettamente bene.
Questo è lo stack di chiamate di errore dal visore di evento
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)
Soluzione
Controlla le "osservazioni" al http: //msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx :
Il tessuto di Windows Azure esegue IIS 7.0 in modalità integrata. in integrata modalità, l'evento fa Application_Start Non sostenere l'accesso alla richiesta contesto o ai membri della Classe RoleManager fornito dal Windows Azure SDK API runtime. Se tu stanno scrivendo un'applicazione ASP.NET che accede al contesto di richiesta o chiama i metodi della classe RoleManager dall'evento Application_Start, è dovrebbe modificarlo per inizializzare in evento Application_BeginRequest invece.
Per un esempio che mostra come utilizzare l'evento Application_BeginRequest, vedere l'esempio che PersonalWebSite fornito con il Windows Azure SDK.
Altri suggerimenti
Se si utilizza:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
Di solito le informazioni di account è dato nel file 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"/>