在 asp.net MVC 上创建 Azure 存储表
Posted
技术标签:
【中文标题】在 asp.net MVC 上创建 Azure 存储表【英文标题】:Creating Azure storage table on asp.net MVC 【发布时间】:2010-11-02 16:29:52 【问题描述】:我正在关注这篇博文来创建一个 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 帐户 = StorageAccountInfo.GetDefaultTableStorageAccountFromConfiguration();
似乎总是无法获取帐户共享密钥。
如果我将行从全局 asax 应用程序开始移动到 default.aspx,它工作得非常好。
与 webform 相比,在 azure asp.net mvc 中初始化存储表有什么不同吗? 为什么我无法在应用程序启动时获得 azure appsettings? 这是来自事件查看器的错误调用堆栈 异常信息: 异常类型:HttpException 异常消息:未指定帐户密钥! 索取资料: 请求网址:http://127.0.0.1:5100/do.__rd_runtime_init__?shutdownEvent=1B671B93FD-4153-4834-9D5D-595EFC6C19EE1D 请求路径:/do.__rd_runtime_init__ 用户主机地址:127.0.0.1 用户: 是否经过身份验证:假 认证类型: 话题帐号名:***** 线程信息: 线程 ID:6 话题帐号名:***** 是否冒充:假 堆栈跟踪:在 System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) 在 System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext,HttpContext 上下文,MethodInfo[] 处理程序) 在 System.Web.HttpApplication.InitSpecial(HttpApplicationState 状态,MethodInfo[] 处理程序,IntPtr appContext,HttpContext 上下文) 在 System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext,HttpContext 上下文) 在 System.Web.HttpApplicationFactory.GetPipelineApplicationInstance(IntPtr appContext,HttpContext 上下文) 在 System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr appContext)
【问题讨论】:
【参考方案1】:查看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 一起提供。
【讨论】:
【参考方案2】:如果你使用:
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"/>
【讨论】:
以上是关于在 asp.net MVC 上创建 Azure 存储表的主要内容,如果未能解决你的问题,请参考以下文章
ASP.NET MVC:从 SQL Server Express 迁移到 Azure
ASP.NET Core MVC 向 Azure AD 验证用户,然后创建 JWT Bearer Token 以调用 Web API
使用 Azure AD 的 Asp.net core mvc 基于角色的授权