3

Windows Azure サイトをクラウドから Web サイトにダウングレードしようとしています。次のエラーが表示されます。

ファイルまたはアセンブリ 'msshrtmi, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。システムは、指定されたファイルを見つけることができません。

[FileNotFoundException: ファイルまたはアセンブリ 'msshrtmi、Version=1.7.0.0、Culture=neutral、PublicKeyToken=31bf3856ad364e35' またはその依存関係の 1 つを読み込めませんでした。指定されたファイルが見つかりません]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.InitializeEnvironment() +0 Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment..cctor() +546

[TypeInitializationException: 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' の型初期化子が例外をスローしました。]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(String configurationSettingName) +0
AzureInit.AzureHelper_GetApplicationSettings(String key) +28

[HttpException (0x80004005): 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' の型初期化子が例外をスローしました。]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext コンテキスト、HttpApplication アプリ) +9859725
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext 、HttpContext コンテキスト、MethodInfo[] ハンドラー) +118
System.Web.HttpApplication.InitSpecial(HttpApplicationState 状態、MethodInfo[] ハンドラー、IntPtr appContext、HttpContext コンテキスト) +172
System.Web.HttpApplicationFactory.GetSpecialApplicationInstance(IntPtr appContext、HttpContext コンテキスト) + 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 コンテキスト) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr、HttpContext コンテキスト) +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;
    }
}
4

1 に答える 1

5

これらの参照 (およびそれらに付随するすべてのコード) を削除します。

  • Microsoft.WindowsAzure.CloudDrive
  • Microsoft.WindowsAzure.Diagnostics
  • Microsoft.WindowsAzure.ServiceRuntime

これらのアセンブリのほとんどの機能は、クラウド サービス (Web/Worker ロール) でのみ使用することを意図しています。

表示されているエラーは、構成の読み取りに関連しているようです。

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 (=クラウド サービス) の場合、ServiceConfiguration.cscfg から読み取ります。そうでない場合 (= Web サイト / 仮想マシン / オンプレミス)、AppSettings から読み取ります。ただし、Web サイトに展開する場合は、ServiceConfiguration.cscfg にあった設定を web.config の appSettings に追加する必要があります。

于 2012-12-18T18:52:47.587 に答える