我已经在 StackOverflow 和其他网站上的其他几个线程上阅读过这个问题。其他解决方案都没有解决我的问题,而且大多数都已经过时,引用了旧版本的 Azure SDK。
我有一个典型的 Azure 网站角色部署到 Azure,用于Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener
记录跟踪消息。发生跟踪时,似乎DiagnosticMonitorTraceListener
正在使用RoleEnvironment
该类,而该类又尝试加载明显不存在的msshrtmi.dll
. 这是正在记录到 Azure 中的文件系统的堆栈跟踪的一部分:
[FileNotFoundException: Could not load file or assembly 'msshrtmi, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironment() +0
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor() +747
[TypeInitializationException: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_IsAvailable() +0
Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitor.GetDefaultStartupInfoForCurrentRoleInstance() +23
Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener..ctor() +34
[ConfigurationErrorsException: Could not create Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener, Microsoft.WindowsAzure.Diagnostics, Version=2.2.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35.]
System.Diagnostics.TraceUtils.GetRuntimeObject(String className, Type baseType, String initializeData) +9004943
System.Diagnostics.TypedElement.BaseGetRuntimeObject() +110
System.Diagnostics.ListenerElement.GetRuntimeObject() +989
System.Diagnostics.ListenerElementsCollection.GetRuntimeObject() +252
System.Diagnostics.TraceInternal.get_Listeners() +331
System.Diagnostics.TraceInternal.WriteLine(String message) +161
Microsoft.WindowsAzure.AzureApplicationSettings..ctor() +437
Microsoft.WindowsAzure.CloudConfigurationManager.get_AppSettings() +137
Microsoft.WindowsAzure.CloudConfigurationManager.GetSetting(String name) +27
TankSoft.EverMarket.EverMarketPrereleaseRole.Endpoints.Api.Notify..ctor() +40
lambda_method(Closure , Object[] ) +60
Autofac.Core.Activators.Reflection.ConstructorParameterBinding.Instantiate() +315
各种线程都提到了我需要如何从我的 bin 文件夹中清除这个 DLL,但首先没有复制 DLL。我怀疑这与我在 Azure SDK 2.2 而不是 1.x 下运行有关。我意识到我可以直接引用 DLL,但我觉得我不应该为了将一个非常正常的项目部署到 Azure 而这样做。为什么 Microsoft 没有自动检测到我的项目需要此文件并为我部署正确的文件?这令人抓狂。
我还要说,我发布的项目不是云服务,而是一个常规的 Azure 网站项目。
是否有人运行 Azure SDK 2.x设法解决了这个问题?您遵循的具体步骤是什么?