Kse*_*iya 9 azure-storage azure-table-storage azure-diagnostics
在WCFService WebRole中使用Windows Azure表存储时,尝试通过以下方式创建CloudStorageAccount:
storageAccount =
CloudStorageAccount.Parse(Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting("[Setting name]"))
Run Code Online (Sandbox Code Playgroud)
得到例外:
ConfigurationErrorsException"无法创建Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,Microsoft.WindowsAzure.Diagnostics,Version = 1.0.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35."
MSDN帮助说1)Visual Studio必须以管理员身份运行.2)角色必须在完全信任下运行(将.NET信任级别选项更改为完全信任).
全部完成,但我仍然有相同的例外.
Ian*_*ths 20
导致此错误的一件事是运行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项目时,永远不会应用转换.)
| 归档时间: |
|
| 查看次数: |
4949 次 |
| 最近记录: |