2010-05-13 2 views
7

Ich versuche AppFabric-Cache in meiner lokalen Entwicklungsumgebung zu installieren. Ich habe Windows Server AppFabric Beta 2 Aktualisieren installiert, und der Cache-Cluster und Host konfiguriert und gestartet unter Windows 7 64-Bit. Ich verwende meine MVC2-Website auf einer lokalen IIS-Website unter einem v4.0-App-Pool im integrierten Modus.AppFabric Cache - Eine bestehende Verbindung wurde vom Remote-Host zwangsweise geschlossen

HostName : CachePort  Service Name   Service Status Version Info 
--------------------  ------------   -------------- ------------ 
SN-3TQHQL1:22233   AppFabricCachingService UP    1 [1,1][1,1] 

Ich habe meine web.config konfiguriert mit den folgenden:

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

Ich erhalte eine Fehlermeldung, wenn ich die DataCacheFactory zu initialisieren versuchen:

protected CacheService() 
    { 
     _cacheFactory = new DataCacheFactory(); <-- Error here 
     _defaultCache = _cacheFactory.GetDefaultCache(); 
    } 

Ich erhalte Der gelbe ASP.NET-Fehlerbildschirm mit den folgenden Werten:

Ein exi Die Verbindung wurde vom Remote-Host zwangsweise geschlossen.

Beschreibung: Bei der Ausführung der aktuellen Webanforderung ist eine nicht behandelte Ausnahme aufgetreten. Bitte überprüfen Sie die Stack-Trace für weitere Informationen über den Fehler und wo es aus dem Code stammt.

Ausnahmedetails: System.Net.Sockets.SocketException: Eine vorhandene Verbindung wurde vom Remotehost geschlossen

Quellfehler:

Line 21:   protected CacheService() 
Line 22:   { 
Line 23:    _cacheFactory = new DataCacheFactory(); 
Line 24:    _defaultCache = _cacheFactory.GetDefaultCache(); 
Line 25:   } 
+0

die eigentliche Frage ist, wenn Ihr Konto keinen Zugriff hat, didnt, warum der Server Ihnen sagt, dass in tead von "Eine bestehende Verbindung wurde vom Remote-Host zwangsweise geschlossen" – felickz

Antwort

14

Ich hatte ein ähnliches Problem, und mein Problem war, dass ich nicht die richtigen Berechtigungen für den Cache-Client gegeben hatte. Um dies schnell zu überprüfen, würde ich jedem Konto Zugriff auf den Cache gewähren. Wenn das Problem dadurch behoben wird, sollten Sie eher den Zugriff auf das entsprechende Konto als auf alle beschränken. Dies kann über das „Caching Administrator Windows Powershell“, den folgenden Befehl ausführen durchgeführt, die in dem Windows Server AppFabric Startmenü-Ordner gefunden wird:

Grant-CacheAllowedClientAccount everyone 
+0

Danke! Ich habe versucht, das für eine Weile herauszufinden, du bist ein Lebensretter. –

+1

Dies ist ein fauler Weg, es zu tun. Eine genauere Lösung ist: Grant-CacheAllowedClientAccount "IIS AppPool \ AppPoolOfYourApplicationAccessingTheCache" –

1

Haben Sie das gleiche Problem, wenn man einen DataCacheFactoryConfiguration verwenden Objekt? z.B.

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(); 
    ... 
} 

Haben Sie den Port auf Ihrer Firewall geöffnet?

Vielleicht überprüfen Sie Einträge in Ihren Ereignisprotokollen - sie können Hinweise darauf geben, was passiert (oder nicht).

+0

Ja, das habe ich auch probiert. Ich habe die ganze Konfiguration so weit wie möglich durchlaufen und alles scheint korrekt konfiguriert zu sein. +1 –

+0

@Wallace Nicht sicher dann. Versuchen Sie eine Neuinstallation vielleicht? – PhilPursglove

+0

Neuinstallation funktionierte auch nicht. Ich bin derzeit in Kontakt mit Microsoft, um dieses Problem zu beheben.Ich werde eine Antwort veröffentlichen, sobald ich von ihnen höre. –

2

Ich hatte dieses Problem auch, und ich fand die Antwort in diesem Thread:

http://social.msdn.microsoft.com/Forums/vstudio/en-US/c27063e7-1579-4d62-9104-87076d1c8d98/client-caching-error-errorcodeerrca0017substatuses0006

die Antwort:

You are seeing this error because of the security property mismatch between client and server.

In your client code you disabled the security (Mode=None and PotectionLevel=None) whereas the cache server uses mode=Transport and PotectionLevel=EncryptAndSign (default in Beta2Fresh bits).

Do either of the following:

1) In the client code use the default security i.e. configuration.SecurityProperties =new DataCacheSecurity();

2) Disable the security at server to match with your existing client code. Use Powershell cmdlet Set-CacheClusterSecurity -SecurityMode None -ProtectionLevel None

+0

Dies funktionierte für mich. Vielen Dank für die Zeit, in der du mich gerettet hast! –

Verwandte Themen