Création table de stockage Azure sur asp.net MVC
-
13-09-2019 - |
Question
je suis ce blog pour créer une table de stockage d'azur: http: //blogs.msdn. com / jnak / archive / 2008/10/28 / walkthrough-simple-table storage.aspx
Il fonctionne très bien sur un asp.net web_role formulaire en ligne.
J'ai recréé le même projet en utilisant mvc de asp.net le rôle Web, et il est toujours défaut au démarrage de l'application. cette ligne:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
semblent ne pas toujours obtenir le compte clé partagée.
Si je déplace la ligne de l'application globale de asax commencent à default.aspx, il fonctionne parfaitement bien.
Ceci est la pile d'appels d'erreur Observateur d'événements
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)
La solution
Découvrez les "remarques" à http: //msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx :
Le tissu Windows Azure exécute IIS 7.0 en mode intégré. dans intégrée mode, l'événement Application_Start fait ne pas soutenir l'accès à la demande contexte ou aux membres du classe roleManager fournie par le Windows Azure SDK API d'exécution. Si vous écrivez une application ASP.NET qui accède au contexte de demande ou appelle les méthodes de la classe roleManager de l'événement Application_Start, vous devrait modifier pour initialiser dans le événement Application_BeginRequest à la place.
Pour un exemple qui montre comment utiliser l'événement Application_BeginRequest, voir l'exemple PersonalWebSite que livré avec le SDK Windows Azure.
Autres conseils
Si vous utilisez:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
En général, les informations de compte sont données dans le fichier 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"/>