我正在尝试将Windows Azure网站从云降级到网站。我收到此错误:
无法加载文件或程序集'msshrtmi,Version = 1.7.0.0, Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或其中一个 依赖。系统找不到指定的文件。
[FileNotFoundException:无法加载文件或程序集'msshrtmi, Version = 1.7.0.0,Culture = neutral,PublicKeyToken = 31bf3856ad364e35'或 其中一个依赖项。系统找不到指定的文件。]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironment() +0 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor()+ 546[TypeInitializationException:类型初始值设定项 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'扔了一个 例外]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(字符串 configurationSettingName)+0
AzureInit.AzureHelper_GetApplicationSettings(String key)+28[HttpException(0x80004005):类型初始值设定项 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'扔了一个 例外]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext的 上下文,HttpApplication app)+9859725
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr的 appContext,HttpContext上下文,MethodInfo []处理程序)+118
System.Web.HttpApplication.InitSpecial(HttpApplicationState状态, MethodInfo [] handlers,IntPtr appContext,HttpContext context)+172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr的 appContext,HttpContext context)+336
System.Web.Hosting.PipelineRuntime.InitializeApplication(IntPtr的 appContext)+296[HttpException(0x80004005):类型初始值设定项 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'扔了一个 例外。] System.Web.HttpRuntime.FirstRequestInit(HttpContext 上下文)+9873912
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest) wr,HttpContext context)+254
因为我不在云中,我需要这个程序集吗?我如何告诉网站不要寻找它?我已将这些引用添加到我的项目中:
Microsoft.WindowsAzure.CloudDrive Microsoft.WindowsAzure.Diagnostics Microsoft.WindowsAzure.ServiceRuntime Microsoft.WindowsAzure.StorageClient
在我的WorkerRole.cs类中,这是我的代码:
/// <summary>
/// Reads settings from service configuration file.
/// </summary>
/// <param name="key">Setting key.</param>
string AzureHelper_GetApplicationSettings(string key)
{
try
{
return RoleEnvironment.GetConfigurationSettingValue(key);
}
catch
{
// Setting key was not found
return null;
}
}
答案 0 :(得分:5)
删除这些引用(以及它们附带的所有代码):
这些程序集的大多数功能仅用于云服务(Web /工作者角色)。
现在您看到的错误似乎与阅读配置有关:
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(String configurationSettingName) +0
AzureInit.AzureHelper_GetApplicationSettings(String key) +28
考虑更改AzureHelper_GetApplicationSettings中的代码以使用Microsoft.WindowsAzure.ConfigurationManager NuGet包。这允许您在ServiceConfiguration.cscfg和Web.config(AppSettings)之间自动切换。如果RoleEnvironment.IsAvailable(= Cloud Service),它将从ServiceConfiguration.cscfg中读取。如果不是(=网站/虚拟机/内部部署),它将从AppSettings中读取。但是,如果部署到网站,则需要将以前在ServiceConfiguration.cscfg中的设置添加到web.config中的appSettings