6
votes

L'initialisateur de type pour 'Microsoft.WindowsAzure.ServiceRuntime.Roleenvironment' a jeté une exception

J'essaie d'utiliser la mise en cache de Windows Azure pour stocker des sessions dans une application MVC4. Je construis une demande suivante à partir de lien Mais lorsque j'essaie de faire un objet de DataCache en utilisant la ligne de code ci-dessous.

InnerException
    Message: The type initializer for 'Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment' threw an exception.

    Source: Microsoft.WindowsAzure.ServiceRuntime

    Stack Trace:    at Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment.get_IsAvailable()
       at Microsoft.ApplicationServer.Caching.AzureClientHelper.RoleUtility.IsAzureEnvironmentAvailable()

Stack Trace:    at System.RuntimeMethodHandle.InvokeMethod(Object target, Object[] arguments, Signature sig, Boolean constructor)
   at System.Reflection.RuntimeMethodInfo.UnsafeInvokeInternal(Object obj, Object[] parameters, Object[] arguments)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at System.Reflection.MethodBase.Invoke(Object obj, Object[] parameters)
   at Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration.Initialize(String clientName)
   at Microsoft.ApplicationServer.Caching.DataCacheFactoryConfiguration..ctor()
   at Microsoft.ApplicationServer.Caching.DataCacheFactory..ctor()
   at Microsoft.ApplicationServer.Caching.DataCacheFactory.InitializeOrFetchSingletonFactoryInstance(String clientConfigurationName)
   at Microsoft.ApplicationServer.Caching.DataCache..ctor(String cacheName, String clientConfigurationName)
   at Microsoft.ApplicationServer.Caching.DataCache..ctor(String cacheName)
   at MvcWebRole.Controllers.HomeController.Index() in d:\Pankaj\Azure.Test\Caching.Sample\MvcWebRole\Controllers\HomeController.cs:line 15
   at lambda_method(Closure , ControllerBase , Object[] )
   at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters)
   at System.Web.Mvc.ControllerActionInvoker.<>c__DisplayClass15.<InvokeActionMethodWithFilters>b__12()
   at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethodFilter(IActionFilter filter, ActionExecutingContext preContext, Func`1 continuation)


4 commentaires

S'il vous plaît poster l'exception pleine , y compris l'Innexception.


Exception: Une exception a été lancée par la cible d'une invocation. Exception interne: {"L'initialisateur de type pour" Microsoft.WindowsAzure.ServiceRuntime.Roleenvironment "a jeté une exception."}


Il y a vraiment non plus d'informations que cela? Pas de trace de pile?


Veuillez trouver les détails de l'exception ci-dessus


3 Réponses :


1
votes

J'ai eu le même problème. La solution consistait à pointer toutes les assemblées d'azur référencées dans chaque projet à la même source (pour moi les DLL dans le dossier SDK). Le NugeManager copie les DLL dans le chemin du projet principal sous packages et pointe les références à ces DLL.


0 commentaires

1
votes

J'ai résolu un problème similaire en ajoutant ceci à app.config:

<startup useLegacyV2RuntimeActivationPolicy="true">
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>


0 commentaires

2
votes

J'ai vécu cela lors de la migration de Azure SDK 2.3 à SDK 2.4 forte>.

J'ai remarqué que la migration corrige automatiquement toutes les références au service d'exécution du service pour mes rôles Web et travailleurs, c'est-à-dire p> xxx pré>

modifié en: p> xxx

Cependant, tous les assemblages référencés des rôles Web / travailleur qui ont référencé que cet assembly n'a pas été mis à jour, je devais le faire manuellement. P>

De plus, je devais mettre à jour le web.config et App.config entrées à la référence 2.4.0.0 P>

<dependentAssembly>
    <assemblyIdentity name="Microsoft.WindowsAzure.ServiceRuntime" publicKeyToken="31bf3856ad364e35" culture="neutral" />
     <bindingRedirect oldVersion="0.0.0.0-2.4.0.0" newVersion="2.4.0.0" />
</dependentAssembly>


1 commentaires

Je n'ai pas migré mais j'ai reçu ce problème avec 2.3 Version dans Azure Cloud. Sur l'émulateur de la machine locale, cela fonctionne bien.