windows-azure-storage – 无法创建Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener

前端之家收集整理的这篇文章主要介绍了windows-azure-storage – 无法创建Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在WCFService WebRole中使用 Windows Azure表存储时,尝试通过以下方式创建CloudStorageAccount:
storageAccount = 
CloudStorageAccount.Parse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("[Setting name]"))

获取例外:

ConfigurationErrorsException “Could not create Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,Microsoft.WindowsAzure.Diagnostics,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35.”

MSDN帮助说1)Visual Studio必须作为管理员运行. 2)角色必须在完全信任下运行(将.NET信任级别选项更改为“完全信任”).

全部完成,但我仍然有同样的例外.

可能导致此错误的一件事是运行Web角色本身,而不是运行包含的云项目.如果这是问题,您可以通过确保将云项目设置为调试的启动项目而不是Web角色来进行修复.

运行定义Web角色的ASP.NET项目是有可能的,有时是有用的.这可能比运行Azure Compute Emulator中的东西要快很多.它也可以使您开发您的项目,而不必运行VS升高.另外,我发现仿真器往往导致Visual Studio不时地报告无效的内存访问错误,此时您需要重新启动VS.运行Web角色直接避免所有这些问题.

但是,有些事情可以防止这种情况发生,您所描述的异常是其中一个问题的症状.如果您的Web角色的Web.config包含Azure的DiagnosticMonitorTraceListener的配置(并且Visual Studio在创建Web角色时默认添加该配置),那么尝试生成跟踪输出的第一件事就会与您在模拟器之外运行时所描述的错误一起崩溃.并且,因为它发生,从CloudConfigurationManager检索设置似乎这样做.

这不是CloudConfigurationManager特有的.它所做的就是产生一些跟踪输出. VS配置Web角色将所有跟踪输出发送到Azure诊断侦听器,并且因为侦听器只能在计算模拟器或实际的Azure实例中运行,所以尝试生成跟踪输出的第一件事情将会崩溃. CloudConfigurationManager是一个常见的候选项,因为它可以产生跟踪输出,通常在角色启动时早期使用.但原则上,产生跟踪输出的任何东西可能会触发此异常.

避免这种情况的一个简单方法是从配置文件删除相关部分.创建新的Web角色时,Visual Studio添加< system.diagnostics>将配置默认跟踪输出的部分转到Azure诊断侦听器.你可以评论一下.这将使您能够直接在Visual Studio中调试Web角色,而不使用计算模拟器(假设您没有做任何依赖于角色环境的任何内容).

当然,问题在于,当您在Azure中运行时,您将无法再获得任何诊断跟踪.一种解决方法是将相关配置移动到Web.config.Release文件(添加必需的xdt:属性).

当您使用本地计算模拟器时,此更改也将阻止Azure诊断跟踪侦听器运行. (这不是一个问题,因为跟踪消息仍将出现在调试器中,这意味着您将不会获得复制到表存储器的跟踪的持久副本,就像在真实运行时一样).解决此问题的明显方法似乎是对Web.config.Debug进行类似的修改(或者在模拟器中运行版本构建),但是存在一个障碍:默认情况下,在打包模拟器时,云项目显然不会应用配置文件转换.幸运的是,您可以解决这个问题:http://blog.hill-it.be/2011/03/07/no-web-config-transformation-in-local-azure/显示了如何在计算模拟器中启用本地调试的转换. (直接从VS中直接调试ASP.NET项目时,转换不会被应用).

猜你在找的Windows相关文章