में डब्ल्यूसीएफ सेवा होस्ट करने में समस्या मेरे पास एक डब्ल्यूसीएफ सेवा है जो विंडोज सेवा के अंदर होस्ट की जाती है।विंडोज सेवा
protected override void OnStart(string[] args)
{
serviceHost = new ServiceHost(typeof (RouterService));
serviceHost.Open();
}
अब यह काफी कम है, के बाद से मैं इस समस्या को खोजने के लिए कोशिश कर रहा हूँ: Windows सेवा एक OnStart
विधि इस तरह है। चूंकि मैंने यहां कोई त्रुटि नहीं डाली है, इस बिंदु पर किसी भी अपवाद ने सेवा को ठीक से शुरू करने से रोक दिया होगा। यह शुरू होगा, और फिर स्वचालित रूप से तुरंत बंद हो जाएगा।
WCF सेवा के लिए मेरे कॉन्फ़िग फ़ाइल इस तरह दिखता है:
<?xml version="1.0"?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0"/>
</startup>
<system.serviceModel>
<services>
<service name="WcfService.RouterService"
behaviorConfiguration="serviceBehavior" >
<endpoint address="RouterService" contract="WcfService.IRouterService" binding="wsHttpBinding" bindingConfiguration="NoSecurity" />
<endpoint address="mex" contract="IMetadataExchange" binding="mexHttpBinding" />
<host>
<baseAddresses>
<add baseAddress="http://localhost:8000"/>
</baseAddresses>
</host>
</service>
</services>
<bindings>
<wsHttpBinding>
<binding name="NoSecurity">
<security mode="None" />
</binding>
</wsHttpBinding>
</bindings>
<behaviors>
<serviceBehaviors>
<behavior name="serviceBehavior" >
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
</configuration>
इसके अलावा, मैं जोड़ लिया है नेटवर्क सेवा उपयोगकर्ता (जो सेवा के रूप में निर्दिष्ट बंदरगाह पर Http को सुनने के लिए सक्षम होने के लिए चल रहा है :।।
netsh http add urlacl url=http://+:8000/ user="NETWORK SERVICE"
अब, क्लाइंट में, मैं Add Service Reference
चुनें मैं सर्वर पा सकते हैं, और वी.एस. भी विन्यास बना सकते हैं और प्रॉक्सी फ़ाइलें बनाने के लिए प्रबंधन तो ग्राहक के अंदर, मैं प्रॉक्सी का एक उदाहरण बनाने के , और इसे खोलो। सब कुछ ठीक है। लेकिन सी पर
HTTP http://localhost:8000/RouterService पर स्थित सेवा बहुत व्यस्त है: प्रॉक्सी पर पहली विधि Alling, मैं निम्नलिखित अपवाद मिलता है।
मुझे पता है कि मेरा ग्राहक एकमात्र चीज है जो इस सेवा से कनेक्ट करने का प्रयास कर रहा है, तो मुझे यह त्रुटि संदेश क्यों मिलता है? और मैं इसे कैसे ठीक कर सकता हूं? जब यह विधि को कॉल करने का प्रयास करता है, तो यह समय समाप्त नहीं होता है, यह लगभग तुरंत अपवाद फेंकता है।
संपादित
ठीक है, अब मुझे पता चला मेरी TestServer (नहीं विंडोज क्लाइंट एक है, लेकिन एक सांत्वना आवेदन) भी एक ही त्रुटि देता है कि। इससे पहले आज ऐसा नहीं हुआ, और न ही डब्ल्यूसीएफ सेवा या टेस्टसेवर बदल गए हैं।
फिर मैंने बंदरगाह को 8000 के बजाय 8080 में बदलने की कोशिश की, और यह काम किया। फिर मैंने विंडोज सेवा के लिए भी कोशिश की, और यह भी काम किया (netsh http
नए पोर्ट पर कमांड चलाने के बाद)
तो किसी कारण से पोर्ट 8000 पर http के साथ कुछ हुआ है। मैंने निश्चित रूप से सिस्टम को पुनरारंभ करने का प्रयास किया है।
यह मुझे परेशान कर रहा है, इसलिए यदि किसी को पता है कि यहां क्या हो रहा है, तो मैं इसकी सराहना करता हूं।
आपकी सेवा किस प्रकार लौट रही है? मैंने इस समस्या को उन सेवाओं में देखा है जो अनसुलझा प्रकारों को वापस करते हैं। सेवा होस्ट के लिए यह शुरू करने या उस तरह कुछ करने के लिए एप्लिकेशन पूल में भी समस्या हो सकती है। – Henric
मैं @daft से सहमत हूं कि सेवा क्रमिकरण समस्याओं के कारण डेटा प्रकार वापस करने में विफल हो सकती है। लागू होने पर आवेदन पूल चिंता का विषय नहीं होना चाहिए क्योंकि यह वही पूल (कम से कम आईआईएस में) है जो wsdl/config की सेवा करता है जो आपको प्रॉक्सी क्लास (जिसे आपने सफलतापूर्वक किया है) उत्पन्न करने की अनुमति देता है। ऐप पूल समस्या को स्पष्ट करने के लिए – Smudge202
+1। धन्यवाद धुंध। – Henric