2011-06-10 9 views
33

मैं वास्तव में Http की दुनिया से आया हूं और पुराने .NET Remoting के साथ बहुत कुछ नहीं किया जो टीसीपी का उपयोग करता था, लेकिन मैं टीसीपी अवधारणाओं को समझता हूं और अब पिछले कुछ वर्षों में net.tcp बाध्यकारी का उपयोग करके कई डब्ल्यूसीएफ सेवाओं को लागू किया है। अधिकांश समय यह चल रहा है, चल रहा है, मैं इसे उपभोग करता हूं, कहानी का अंत। हालांकि कभी-कभी सर्वर सेटअप अधिक उन्नत होता है और मुझे संचार त्रुटियां मिलती हैं जो 1 सर्वर पर मौजूद होती हैं और शायद किसी अन्य से नहीं। यह साबित करने के लिए कि क्या यह फ़ायरवॉल/सर्वर/आदि है। मुद्दा मुझे यह देखने की ज़रूरत है कि क्या डब्ल्यूसीएफ सेवा को बिना किसी मुद्दे के देखा या पहुंचा जा सकता है। यह net.tcp का उपयोग कर एक विंडोज सेवा होस्टेड डब्ल्यूसीएफ सेवा के लिए है जिसे मैं इस स्थिति को समझने की कोशिश कर रहा हूं।दूरस्थ सर्वर से net.tcp endpoint का उपयोग कर डब्ल्यूसीएफ सेवा की स्थिति को पिंग या जांचने के लिए कैसे करें?

यह बात एक डब्ल्यूसीएफ सेवा के साथ है जो HTTP बाध्यकारी के माध्यम से उजागर की गई है, मैं सेवा पृष्ठ को देखने के लिए ब्राउज़र में यूआरआई को बस उछाल सकता हूं ताकि मुझे यह पता चल सके कि सेवा ठीक से चल रही है। आसान परीक्षण।

मैं net.tcp बाइंडिंग के माध्यम से प्रकट डब्लूसीएफ सेवा के बराबर कैसे कर सकता हूं? क्या कोई उपकरण या कमांड है जिसका उपयोग मैं उदाहरण के लिए net.tcp//mycustomWCFService:8123/MyService परीक्षण करने के लिए कर सकता हूं? मैंने कोड कोड पर कुछ पोस्ट प्रोग्रामेटिक रूप से निर्धारित करने के लिए देखी हैं कि डब्ल्यूसीएफ सेवा उपलब्ध है या नहीं, लेकिन मैं इसे इस तरह से नहीं करना चाहता हूं। मैं यह जांच करना चाहता हूं कि पर बिना कोड के बिना, ब्राउज़र में http endpoint खींचने के समान।

किसी भी मदद की सराहना की है, धन्यवाद!

+2

मैं भी इसी तरह के मुद्दे को हल करने के लिए सोच रहा हूं। मुझे यकीन नहीं है कि डब्ल्यूसी सेवा चल रही है या नहीं? –

उत्तर

41

आपकी सेवा एक मेटाडाटा समाप्ति बिंदु (आमतौर पर mex नामित और प्रिंसिपल endpoint के नीचे नेस्ट, इस मामले में mexTcpBinding का उपयोग करके लागू) को लागू करता है, तो आप कर सकते हैं "पिंग" यह svcutil कमांड लाइन उपयोगिता है कि दृश्य स्टूडियो के साथ प्रदान की है का उपयोग कर। उदा।,

svcutil net.tcp://mycustomWCFService:8123/MyService/mex 

यदि यह कोई त्रुटि फेंकता है, तो आपकी सेवा (संभावित रूप से) नीचे है। यदि यह सफल होता है, तो आप व्यवसाय में (संभावित) हैं। जैसा कि पिछले मूलभूत सिद्धांतों का सुझाव है, यह अनुमान है। इसका मतलब है कि पते पर एक श्रोता है और यह मेटाडेटा अनुरोध की सेवा करने में सक्षम है।

+1

अगर मैं रिमोट सर्वर पर हूं जहां विजुअल स्टूडियो स्थापित नहीं किया गया था, तो क्या svcutil.exe उपयोगिता अभी भी स्थापित की जाएगी? – atconway

+2

नहीं, ऐसा नहीं होगा, लेकिन इसमें कोई निर्भरता नहीं है जो मुझे पता है जब तक कि आप इसे रिमोट सर्वर पर कॉपी कर सकें, जो आप व्यवसाय में होंगे। –

+0

मुझे लगता है कि मैं कोड का उपयोग कर कॉल अप और एक छोटे WinForms ऐप को svcutil.exe का उपयोग करके इस सर्वोत्तम को व्यवस्थित करने की निर्भरता के रूप में लपेट सकता हूं। सलाह के लिये धन्यवाद। अतिरिक्त 50 अंक का आनंद लें !!! – atconway

3

एक ही आईआईएस साइट पर एक HTTP बाध्यकारी (एक अलग बंदरगाह का उपयोग !!) जोड़ने के लिए और सेवा व्यवहार में <serviceDebug httpHelpPageEnabled="true" /> जोड़ने के लिए ऐसा करने का एक आसान तरीका होगा (मान लीजिए कि सेवा आईआईएस में होस्ट की गई है)। इस तरह आप आसानी से जांच सकते हैं कि सेवा ब्राउज़र में अपने HTTP यूआरएल पर नेविगेट करके है। माना जाता है कि, इस तरह से आप केवल यह पता लगा सकते हैं कि सेवा बढ़ रही है या नहीं, आप उदाहरण के लिए विशेष टीसीपी पोर्ट पर किसी भी नेटवर्किंग मुद्दों का पता लगाने में सक्षम नहीं होंगे।

यदि आपको बाद के मुद्दे को भी संबोधित करने की आवश्यकता है, या यदि HTTP बाध्यकारी जोड़ना संभव नहीं है तो आप सेवा अनुबंध में केवल एक साधारण "पिंग" ऑपरेशन जोड़ सकते हैं और उसको आह्वान करने के लिए net.tcp क्लाइंट का उपयोग कर सकते हैं।

+0

आईआईएस होस्टेड साइटों के लिए अच्छा विचार केवल मूल रूप से केवल net.tcp बाइंडिंग का उपयोग करके ही किया गया है, लेकिन मेरे परिदृश्य के लिए मैं डब्ल्यूसीएफ सेवा के साथ और अधिक बोल रहा था net.tcp का उपयोग कर एक विंडोज सेवा में होस्ट किया गया। मैंने इस जानकारी को शामिल करने के लिए ओपी संपादित किया। – atconway

29

एक और तरीका है मैं पाया कम से कम देखें कि क्या वह सुन रहा है निम्नलिखित 'netstat' कमांड (एक कमांड प्रॉम्प्ट से) स्थापित सर्वर पर जारी करने के लिए है:

netstat -ona | "8123"

(हां यह ऊपर दिए गए आदेश में एक पाइप डिलीमीटर है)। अगर कुछ भी लौटाया जाता है तो यह खोजी गई बंदरगाह पर सक्रिय रूप से सुन रहा है और होस्ट किया जाता है।

0

आप सुनवाई बंदरगाहों, यानी टेलनेट {यूआरएल या आईपी} {पोर्ट} खोजने के लिए टेलनेट क्लाइंट प्रोग्राम का भी उपयोग कर सकते हैं। यह जांचने के लिए कि क्या कोई वेबसाइट ऊपर है .. 'टेलनेट www.godaddy.com 80' शुरू में एक रिक्त विंडो का उत्पादन करना चाहिए, जिसके बाद कोई आदेश अनुवर्ती प्रतिक्रिया नहीं है (400) यदि कोई आदेश नहीं चलता है।

संबंधित मुद्दे