Schließlich WCF Duplex Silverlight 4 Client starten 404 Not Found
Fehler für Poll-Nachrichten, sofort nach Umfrage wurde vom WCF-Dienst an Silverlight-Client gesendet, manchmal passiert dies für die zweite Umfrage manchmal Konnektivität Stunden arbeitet oder sogar Tage, aber meistens scheitert die erste Minute.WCF Silverlight-Client 404 nicht gefunden Antwort für Umfrage-Nachricht
! Und was das Thema ist interessant ist wie bekannt Silverlight 4 Fehler bei der Verwendung von MaxMessagesPerPoll
Duplex-Modus und Lösung wird here und here beschrieben, aber ich bin mit SingleMessagePerPoll
Modus. ANyway versuchte ich mit ClientStack
wie vorgeschlagen, aber nichts geändert.
Allgemeiner Fluss:
- SL Client führt WCF-Service-Methode, empfangene Antwort
- Dann sofort SL Client Umfrage Nachrichten-Dienst starten zu senden und dann Ausnahme immer für die zweite oder Ns Umfrage Nachricht
System.Net.WebException: The remote server returned an error: NotFound
- Fiddler zeigen nur leere
404
Antwort für eine Umfrage Nachricht - Dann Client Chan nel Faulted Ereignis ausgelöst
Ich versuche, SL-Client nach einer solchen Störung, einzelne Reconnect Wiederholungsfluss wieder zu verbinden:
- Griff
Faulted
Ereignis - Abmelden alle Kanalereignisse wie
Closed/Closing/Opened/Opening
- Schließen Kanal in einem richtigen Weg
try { close } catch { abort }
- All unten in einem neuen Thread poll-Thread mit: (I foudn das funktioniert leicht stabil - see this article)
- Warten Sie 45-70 Sekunden
- die gleiche
DuplexChannelFactory<T>
Instanz Mit einem neuen Kanal erstellen, für alle Kanalereignisse abonnieren Sie doch einfach zur Protokollierung - WCF-Service-Methode Execute
Nach 1-10 Wiederholungen (~ 1-10 Minuten) Client schließlich mit einem Server verbinden und normales Polling fortsetzen.
In WCF-Dienstprotokoll sehe ich alles cleint Anfrage bekommen, ohne jede Ausnahme verarbeitet, so scheint es, etwas auf Silverlight Client-Seite geschieht.
Allgemeine Informationen:
- .NET Framework 4.0
- PollingDuplex
- Async WCF Methoden
- IIS 6.0 gehosteten WCF-Dienst
- Silverligth 4 Client
- Client-Betriebssystem: Windows XP SP2
- Server OS: Windows 2003 R2 SP2
- NTLM-Authentifizierung
- DuplexMode: SingleMessagePerPoll
- Es gibt einen anderen WCF-Dienst die nicht Request/Reply vor meinem Dienst zu arbeiten beginnen, verwendet es nicht Duplex-Konnektivität
- auf SL-Client-Dienst ich alles in die UI bin Protokollierung so alle Veranstaltungen fließen und haben Zeit für jede einzelne Veranstaltung
- keine Fehler in IIS-Protokolle, Server-Ereignisprotokolle
Auftraggeber:
var binaryBinding = new BinaryMessageEncodingBindingElement();
binaryBinding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
var httpbindingElement = new HttpTransportBindingElement
{
MaxReceivedMessageSize = 131072
};
var pollingDuplexBindingElement = new PollingDuplexBindingElement
{
ClientPollTimeout = new TimeSpan(0, 0, 1, 30),
InactivityTimeout = new TimeSpan(0, 8, 0, 0),
};
_binding = new CustomBinding(
pollingDuplexBindingElement,
binaryBinding,
httpbindingElement)
{
SendTimeout = new TimeSpan(0, 0, 0, 45),
CloseTimeout = new TimeSpan(0, 0, 0, 25),
ReceiveTimeout = new TimeSpan(0, 8, 0, 0),
OpenTimeout = new TimeSpan(0, 0, 0, 45)
};
httpbindingElement.AuthenticationScheme = AuthenticationSchemes.Negotiate;
var endpoint = new EndpointAddress(_endpointAddress);
_channelFactory = new DuplexChannelFactory<TWebService>(
new InstanceContext(instanceOfClientServiceClass),
_binding,
endpoint);
// then this factory used to create a new channels
// Also for a new channel I'm setting OpTimeout
var contextChannel = newChannel as IContextChannel;
if (contextChannel != null)
{
contextChannel.OperationTimeout = TimeSpan.FromSeconds(45);
}
Server:
- WCF, PerSession, multithreaded
- Alles ist Thread-sicher
- Keine Serverdienstausnahmen während der Ausführung so
- Viele Protokollierung sehe ich, was auf einen Dienst wird auf
- Alle WCF Spuren aktiviert sind mit switchValue
All
, nichts Verdächtiges
<binding name="customName"
sendTimeout="00:01:00"
receiveTimeout="08:00:00"
openTimeout="00:01:00"
closeTimeout="00:00:35">
<pollingDuplex
inactivityTimeout="08:00:00"
serverPollTimeout="00:01:00" />
<binaryMessageEncoding />
<httpTransport authenticationScheme="Ntlm"
maxReceivedMessageSize="131072">
</httpTransport>
</binding>
<behavior name="customBehavior">
<dataContractSerializer maxItemsInObjectGraph="2147483647" />
<serviceDebug includeExceptionDetailInFaults="true" />
<serviceThrottling
maxConcurrentCalls = "500"
maxConcurrentSessions = "500"
maxConcurrentInstances = "500" />
</behavior>
überprüfen http://stackoverflow.com/questions/1521117/wcf-over-ssl-404-error –
Danke, aber scheint nicht mein Fall, ich benutze SSL nicht und myservice funktioniert manchmal ohne 404 für einen Tag, aber manchmal kann nicht arbeiten gut sogar 10 Minuten – sll