2012-12-18 16 views
3

J'essaie de rétrograder un site Windows Azure du cloud vers un site Web. Je reçois cette erreur:Impossible de charger le fichier ou l'assemblage 'msshrtmi, Le système ne trouve pas le fichier spécifié

Could not load file or assembly 'msshrtmi, Version=1.7.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.

[FileNotFoundException: Could not load file or assembly 'msshrtmi, Version=1.7.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() +546

[TypeInitializationException: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.]
Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(String configurationSettingName) +0
AzureInit.AzureHelper_GetApplicationSettings(String key) +28

[HttpException (0x80004005): The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.]
System.Web.HttpApplicationFactory.EnsureAppStartCalledForIntegratedMode(HttpContext context, HttpApplication app) +9859725
System.Web.HttpApplication.RegisterEventSubscriptionsWithIIS(IntPtr appContext, HttpContext context, MethodInfo[] handlers) +118
System.Web.HttpApplication.InitSpecial(HttpApplicationState state, 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): The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.] System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9873912
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101 System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

Parce que je ne suis pas dans le nuage, ai-je besoin de cet assemblage? Comment puis-je dire au site de ne pas le chercher? J'ai ajouté ces références à mon projet:

Microsoft.WindowsAzure.CloudDrive Microsoft.WindowsAzure.Diagnostics Microsoft.WindowsAzure.ServiceRuntime Microsoft.WindowsAzure.StorageClient

Dans ma classe WorkerRole.cs, voici mon Code:

/// <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; 
    } 
} 

Répondre

5

Enlevez ces références (et tout le code qui vient avec eux):

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

La plupart des caractéristiques de ces ensembles sont uniquement destinés à être utilisés dans les nuages ​​Services (Rôles Web/travailleurs).

Maintenant l'erreur que vous voyez semble être lié à la lecture de la configuration:

Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.GetConfigurationSettingValue(String configurationSettingName) +0 
AzureInit.AzureHelper_GetApplicationSettings(String key) +28 

Pensez à changer le code dans votre AzureHelper_GetApplicationSettings pour utiliser le package NuGet Microsoft.WindowsAzure.ConfigurationManager. Cela vous permet de basculer automatiquement entre ServiceConfiguration.cscfg et Web.config (AppSettings). Si RoleEnvironment.IsAvailable (= Service Cloud), il va lire à partir du ServiceConfiguration.cscfg. Si ce n'est pas le cas (= site Web/machines virtuelles/sur site), il sera lu à partir de AppSettings. Mais si vous déployez sur des sites Web, vous devrez ajouter les paramètres qui étaient auparavant dans votre ServiceConfiguration.cscfg à l'appSettings dans votre web.config

Questions connexes