6

Windows Azure キャッシュを使用してセッションを MVC4 アプリケーションに保存しようとしています。リンクの手順に従ってアプリケーションを構築しますが、以下のコード行を使用して DataCache のオブジェクトを作成しようとすると.

DataCache cache = new DataCache("default");

エラーが発生します:

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)
4

3 に答える 3

2

これは、Azure SDK 2.3 から SDK 2.4に移行したときに経験しました。

移行により、Web ロールと worker ロールのサービス ランタイムへのすべての参照が自動的に修正されたことに気付きました。

C:\Program Files\Microsoft SDKs\Windows Azure\.NET SDK\v2.3\ref\Microsoft.WindowsAzure.ServiceRuntime.dll

に変更:

C:\Program Files\Microsoft SDKs\Azure\.NET SDK\v2.4\ref\Microsoft.WindowsAzure.ServiceRuntime.dll

ただし、このアセンブリを参照する web/worker ロールから参照されるアセンブリは更新されなかったため、手動で行う必要がありました。

さらに、2.4.0.0 を参照するように web.config および app.config エントリを更新する必要がありました

<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>
于 2014-10-16T09:49:28.800 に答える