La creación de la tabla de almacenamiento de Azure en asp.net MVC
-
13-09-2019 - |
Pregunta
Estoy siguiendo esta entrada del blog para crear una tabla de almacenamiento de Azure: http: //blogs.msdn. com / jnak / archivo / 2008/10/28 / tutorial-sencillo-table-storage.aspx
Funciona bien en una web_role asp.net formulario web.
He recreado el mismo proyecto utilizando asp.net mvc como el papel web, y siempre ha fallar al iniciar la aplicación. esta línea:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
parecen fallar siempre conseguir la cuenta de clave compartida.
Si muevo la línea de aplicación global asax empezar a default.aspx, funciona perfectamente bien.
Esta es la pila de llamadas de error del visor 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)
Solución
Vea las "observaciones" en http: //msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx :
La estructura de Windows Azure se ejecuta IIS 7.0 en el modo integrado. en integrada el modo, el evento Application_Start hace No apoyar el acceso a la solicitud contexto o de los miembros de la roleManager clase proporcionada por el Windows Azure SDK API de tiempo de ejecución. Si tu está escribiendo una aplicación ASP.NET que tiene acceso al contexto de la petición o llama a los métodos de la clase roleManager Del evento Application_Start, se debe modificarlo para inicializar en el evento Application_BeginRequest en su lugar.
En un ejemplo que muestra cómo utilizar el evento Application_BeginRequest, Vea el ejemplo PersonalWebSite que se suministra con el SDK de Windows Azure.
Otros consejos
Si utiliza:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
Por lo general, la información de la cuenta se da en el archivo 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"/>