2012-09-11 2 views
6

MVC4アプリケーションでは、Azureで実行し、セッションを同じ場所のキャッシュに保存します。マイクロソフトが提供するthis How-toに記載されています。同じ場所にあるAzureキャッシュに保存されているセッションは、複数のインスタンスで同期外れになります

2つの小さなインスタンスを実行すると、すべて正常に動作しているようです。私はアプリケーションにログインすることができ、アプリケーション内をブラウズするとログインしたままになります。したがって、セッションは両方のインスタンスで動作するようです。しかし

、私はセッションデータにこのような何か更新:のみ変更

HttpContext.Current.Session["someVar"] = "new value"; 

は、その特定のリクエストを処理インスタンスに影響を持っているようです。今ではアプリケーションをブラウズするときに、時々私は初期値を取得し、時々私は更新された値を取得します。

私はweb.configファイルに変更を加えていないので、それはそれはNugetパッケージによって追加されるとき、それがそうであるように正確になります。

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider"> 
    <providers> 
    <add name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
      cacheName="default" 
      useBlobMode="true" 
      dataCacheClientName="default" /> 
    </providers> 
</sessionState> 

が、私は別の方法でセッションを処理する必要がありますかAzureキャッシュを使用しているとき、または何か他のものがここにないのですか?

答えて

7

分散キャッシュが同じアプリケーション境界内で共有状態を表示できるように、applicationNameを割り当てる必要があります。 MSDN forum post for referenceを参照してください。

<add name="AppFabricCacheSessionStoreProvider" 
      type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache" 
      applicationName="azureMVC4App" 
      cacheName="default" 
      useBlobMode="true" 
      dataCacheClientName="default" /> 

アプリケーションの境界を越えてキャッシュ状態を共有したい場合は、あなたがsharedId

+0

を割り当てる必要があります。これは理にかなって、ありがとうございました!私はそれを試してみましょう。 –

+1

それは魅力のように働いた、もう一度ありがとう! –

関連する問題