我正在关注此博文,以创建一个azure存储表: http://blogs.msdn.com/jnak/archive/2008/10/28/walkthrough-simple-table-storage.aspx
它在asp.net webform web_role上运行良好。
我使用asp.net mvc作为Web角色重新创建了同一个项目,并且它始终在应用程序启动时失败。这一行:
StorageAccountInfo account = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
似乎始终无法获取帐户共享密钥。
如果我将该行从全局asax应用程序启动移动到default.aspx,它可以正常工作。
的错误调用堆栈
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)
答案 0 :(得分:2)
查看http://msdn.microsoft.com/en-us/library/microsoft.servicehosting.serviceruntime.rolemanager.aspx上的“备注”:
Windows Azure结构运行IIS 7.0 在集成模式下。在整合 模式,Application_Start事件 不支持访问请求 上下文或成员 由RoleManager类提供 Windows Azure SDK运行时API。如果你 正在编写一个ASP.NET应用程序 访问请求上下文或 调用RoleManager类的方法 从Application_Start事件中,你 应修改它以初始化 Application_BeginRequest事件 代替。
有关如何使用的示例 Application_BeginRequest事件, 请参阅PersonalWebSite示例 附带Windows Azure SDK。
答案 1 :(得分:0)
如果您使用:
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"/>