"Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment"的类型初始值设定项引发异常

use*_*784 6 .net c# azure-worker-roles azure-caching

我正在尝试使用Windows Azure缓存在MVC4应用程序中存储会话.我按照Link的步骤构建了一个应用程序,但是当我尝试使用下面的代码行创建DataCache的对象时.

DataCache cache = new DataCache("default");
Run Code Online (Sandbox Code Playgroud)

发生错误:

找不到Microsoft.WindowsAzure.ServiceRuntime.dll或版本不匹配,我将Windows Azure Emulator版本更新为2.0.0并使用NuGet软件包安装程序安装WindowsAzure.Caching软件包版本2.0.0.0.现在错误更改为"Microsoft.WindowsAzure.ServiceRuntime.RoleEnvironment'的类型初始化程序引发异常."

我在用 Windows 8 with VS2012 and Windows Azure Emulator version 2.0.0.

如果有人能帮助我,我将不胜感激.

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)
Run Code Online (Sandbox Code Playgroud)

gum*_*umo 1

我遇到过同样的问题。解决方案是将每个项目中所有引用的 Azure 程序集指向同一源(对我来说是 SDK 文件夹中的 dll)。NuGetManager 将 dll 复制到主项目路径下packages,并将引用指向这些 dll。