在 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 存储表的主要内容,如果未能解决你的问题,请参考以下文章

Azure 云服务上的 Asp.Net Core MVC?

ASP.NET MVC:从 SQL Server Express 迁移到 Azure

ASP.NET Core MVC 向 Azure AD 验证用户,然后创建 JWT Bearer Token 以调用 Web API

使用 Azure AD 的 Asp.net core mvc 基于角色的授权

从 GitHub 持续部署在 Azure 中失败(ASP.NET 5 和 MVC 6)

Azure 部署后 ASP.NET Core MVC webapp 错误