AppFabric キャッシュ - 既存の接続がリモート ホストによって強制的に閉じられました
-
26-09-2019 - |
質問
AppFabric キャッシュをローカル開発環境で起動して実行しようとしています。私は持っている Windows Server AppFabric ベータ 2 の更新 がインストールされ、キャッシュ クラスターとホストが構成され、Windows 7 64 ビット上で実行が開始されました。統合モードの v4.0 アプリ プール下のローカル IIS Web サイトで MVC2 Web サイトを実行しています。
HostName : CachePort Service Name Service Status Version Info
-------------------- ------------ -------------- ------------
SN-3TQHQL1:22233 AppFabricCachingService UP 1 [1,1][1,1]
web.config を次のように構成しました。
<configSections>
<section name="dataCacheClient" type="Microsoft.ApplicationServer.Caching.DataCacheClientSection, Microsoft.ApplicationServer.Caching.Core, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" allowLocation="true" allowDefinition="Everywhere"/>
</configSections>
<dataCacheClient>
<hosts>
<host name="SN-3TQHQL1" cachePort="22233" />
</hosts>
</dataCacheClient>
DataCacheFactory を初期化しようとすると、エラーが発生します。
protected CacheService()
{
_cacheFactory = new DataCacheFactory(); <-- Error here
_defaultCache = _cacheFactory.GetDefaultCache();
}
次のような ASP.NET の黄色のエラー画面が表示されます。
既存の接続がリモート ホストによって強制的に閉じられました
説明:現在の Web リクエストの実行中に、ハンドルされない例外が発生しました。エラーとコード内のどこでエラーが発生したかの詳細については、スタック トレースを確認してください。
例外の詳細:System.Net.Sockets.SocketException:既存の接続がリモート ホストによって強制的に閉じられました
ソースエラー:
Line 21: protected CacheService()
Line 22: {
Line 23: _cacheFactory = new DataCacheFactory();
Line 24: _defaultCache = _cacheFactory.GetDefaultCache();
Line 25: }
解決
私も同様の問題があったが、私の問題は、私は、キャッシュ・クライアントに適切な権限を与えられていなかったでした。すぐにこれを確認するために私はキャッシュに誰もアカウントへのアクセスを許可する問題です。この修正した場合の問題は、適切なアカウントではなく、すべての人へのアクセスを制限するに見えます。これは、Windows ServerのAppFabricのスタートメニューフォルダに発見された「キャッシュ管理者のWindows PowerShell」を介して、以下のコマンドを実行して行わことができます:
Grant-CacheAllowedClientAccount everyone
他のヒント
私もこの問題を抱えていましたが、このスレッドで答えを見つけました。
答え:
クライアントとサーバーの間のセキュリティプロパティの不一致のため、このエラーが表示されます。
クライアントコードでは、セキュリティを無効にしました(モード= noneおよびpotectionlevel = none)が、キャッシュサーバーはモード= TransportおよびpotectionLevel = encryptandSign(beta2freshビットのデフォルト)を使用します。
次のいずれかを実行します。
1) クライアント コードではデフォルトのセキュリティを使用します。つまり、configuration.SecurityProperties =new DataCacheSecurity();
2)既存のクライアントコードと一致するように、サーバーでのセキュリティを無効にします。PowerShell cmdlet set -cacheclustersecurity -securitymodeなし - プロテクションレベルなしを使用します
あなたはDataCacheFactoryConfigurationオブジェクトを使用する場合は、同じ問題を取得していますか?例えばます。
protected CacheService()
{
DataCacheFactoryConfiguration config;
List<DataCacheServerEndpoint> endpoints;
DataCacheFactory factory;
DataCache cache;
endpoints = new List<DataCacheServerEndpoint>();
endpoints.Add(new DataCacheServerEndpoint("SN-3TQHQL1",22233));
config = new DataCacheFactoryConfiguration();
config.Servers = endpoints;
factory = new DataCacheFactory(config);
cache = factory.GetDefaultCache();
...
}
あなたのファイアウォールのポートを開いていますか?
たぶん、あなたのイベントログにエントリをチェック - 。彼らが起こっている(またはされていない)ものに手がかりを提供することがあります。