आखिरकार डब्ल्यूसीएफ डुप्लेक्स सिल्वरलाइट 4 क्लाइंट मतदान संदेशों के लिए 404 Not Found
त्रुटियों को प्राप्त करना शुरू कर देता है, मतदान के बाद डब्लूसीएफ सेवा से सिल्वरलाइट क्लाइंट को भेजा गया था, कभी-कभी यह दूसरे चुनाव के लिए होता है कभी-कभी कनेक्टिविटी काम करता है या यहां तक कि दिन भी, लेकिन ज्यादातर पहले मिनटों में विफल रहता है।डब्ल्यूसीएफ सिल्वरलाइट क्लाइंट को मतदान संदेश के लिए 404 नहीं मिला
! और MaxMessagesPerPoll
डुप्लेक्स मोड का उपयोग करते समय यह समस्या दिलचस्प है कि सिल्वरलाइट 4 बग ज्ञात है और समाधान here और here का वर्णन किया गया है लेकिन मैं SingleMessagePerPoll
मोड का उपयोग कर रहा हूं। एनीवे मैंने सुझाए गए ClientStack
का उपयोग करने की कोशिश की लेकिन कुछ भी नहीं बदला।
जनरल प्रवाह:
- SL ग्राहक कार्यान्वित WCF सेवा विधि, प्रतिक्रिया
- फिर तुरंत SL ग्राहक सेवा करने के लिए सर्वेक्षण संदेश भेजने और उसके बाद दूसरे या Ns चुनाव संदेश
System.Net.WebException: The remote server returned an error: NotFound
- फिडलर केवल
404
एक सर्वेक्षण संदेश के लिए प्रतिक्रिया - फिर क्लाइंट चैन नेल गलती घटना उठाया
मैं इस तरह के एक गलती के बाद SL ग्राहक फिर से कनेक्ट करने की कोशिश कर रहा हूँ, एक पुनः कनेक्ट पुन: प्रयास करें प्रवाह:
- हैंडल
Faulted
घटना - सदस्यता समाप्त की तरह
Closed/Closing/Opened/Opening
- बंद सभी चैनल घटनाओं
try { close } catch { abort }
- का उपयोग कर एक सही तरीके से चैनल एक नए थ्रेड पोल थ्रेड में नीचे दिया गया है: (मुझे लगता है कि यह थोड़ा स्थिर काम करता है - see this article)
- 45-70 सेकंड
- ही
DuplexChannelFactory<T>
उदाहरण का उपयोग करते हुए एक नया चैनल बनाने रुको, सिर्फ प्रवेश के प्रयोजनों के सभी चैनल ईवेंट की सदस्यता - निष्पादित WCF सेवा विधि
1-10 पुनर्प्रयास करने के बाद (~ 1-10 मिनट) क्लाइंट अंततः एक सर्वर से कनेक्ट होता है और सामान्य मतदान जारी रखता है।
डब्ल्यूसीएफ सेवा लॉग में मुझे लगता है कि यह सभी क्लींट अनुरोध प्राप्त करता है, बिना किसी अपवाद के संसाधित किया जाता है, इसलिए ऐसा लगता है कि सिल्वरलाइट क्लाइंट पक्ष पर कुछ होता है।
सामान्य जानकारी:
- .NET फ्रेमवर्क 4.0
- PollingDuplex
- Async WCF तरीकों
- आईआईएस 6।0 WCF सेवा की मेजबानी की
- Silverligth 4 ग्राहक
- ग्राहक ओएस: Windows XP SP2
- सर्वर ओएस: Windows 2003 R2 SP2
- NTLM प्रमाणीकरण
- DuplexMode: SingleMessagePerPoll
- एक अन्य WCF सेवा है जो मेरी सेवा काम शुरू करने से पहले अनुरोध/उत्तर देता है, यह डुप्लेक्स कनेक्टिविटी
- एसएल क्लाइंट सेवा पर मैं सब कुछ यूआई में लॉग इन कर रहा हूं इसलिए सभी घटनाओं का प्रवाह देखें और प्रत्येक विशेष घटना के लिए समय लें
- आईआईएस लॉग, सर्वर इवेंट लॉग में कोई त्रुटि नहीं
ग्राहक:
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);
}
सर्वर:
- WCF, PerSession, बहु-क्रम
- सब कुछ धागा सुरक्षित
- है निष्पादन निष्पादन के दौरान कोई सर्वर सेवा अपवाद नहीं
- प्रवेश का एक बहुत तो मैं क्या देखते हैं एक सेवा
- सभी WCF निशान switchValue
All
साथ सक्षम हैं, संदिग्ध
<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>
चेक http://stackoverflow.com/questions/1521117/wcf-over-ssl-404-error –
धन्यवाद, लेकिन मेरा मामला नहीं लगता है, मैं एसएसएल और मेरी सेवा का उपयोग नहीं कर रहा हूं कभी-कभी 404 दिनों के बिना काम करता हूं, लेकिन कभी-कभी काम नहीं कर सकता ठीक है 10 मिनट – sll