2008-10-18 10 views
5

का उपयोग कर आईआईएस पर कई HTTP श्रोताओं को शुरू करना मेरे पास एक ही मशीन पर दो विंडोज सेवाएं चल रही हैं। दोनों सेवाएंसी # .NET 2.0

निजी HttpListener श्रोता का उपयोग करती है;

मैं के रूप में "http://IPAddress:8080/" & "http://IPAddress:8081/" क्रमशः सेवाओं से प्रत्येक के लिए baseurl निर्दिष्ट करें। फिर मैं जरूरी और कॉल

श्रोता (कॉल) (कॉल;

पहली सेवा सफलतापूर्वक 8080 पोर्ट पर शुरू होती है। लेकिन जब मैं अब दूसरी सेवा शुरू करता हूं, मुझे HTTPListenerException मिलता है "श्रोता ऑब्जेक्ट के लिए प्रक्रिया को फ़ाइल तक नहीं पहुंच सकता क्योंकि यह किसी अन्य प्रक्रिया द्वारा उपयोग किया जा रहा है"।

क्या कोई मुझे बता सकता है: 1) यदि दो अलग-अलग बंदरगाहों पर एक ही आईआईएस पर दो HTTP श्रोताओं को शुरू करना संभव है। 2) यदि हां, तो हम इसे कैसे स्वीकार कर सकते हैं? 3) क्या ऐसा करने का कोई और तरीका है?

आपकी जानकारी के लिए: मैं सी # .NET 2.0 और आईआईएस 6.0 सर्वर का उपयोग कर रहा हूं।

धन्यवाद & सादर,

हरि

उत्तर

4

HttpListener आईआईएस से स्वतंत्र रूप से काम नहीं करता है? क्या आप आईआईएस सेवा को रोक सकते हैं और देख सकते हैं कि क्या होता है?

या शायद पोर्ट 8081 किसी अन्य प्रोग्राम या प्रक्रिया द्वारा उपयोग किया जाता है। मैं पोर्ट को दूसरे नंबर पर सेट करने का प्रयास करने का सुझाव देता हूं। देखने के लिए यदि आप पोर्ट को उपयोग करते हैं, तो आप कमांड लाइन खोल सकते हैं और "netstat" कमांड निष्पादित कर सकते हैं।

alt text http://simpleinformation213421.googlepages.com/netstat_ano.gif

1

HTTPListener वास्तव में आईआईएस का एक हिस्सा नहीं है। यह सिर्फ सी # कोड है।

क्या आपने ऐसा किया है?

String[] prefixes = { "http://localhost:8280/", "http://localhost:8281/"}; 

HttpListener listener = new HttpListener(); 
listener.Prefixes.Add("http://localhost:8280/"); 
listener.Start(); 

1) यदि यह दो अलग अलग बंदरगाहों पर ही आईआईएस पर दो HTTP श्रोताओं शुरू करने के लिए संभव है।

हाँ, यह है। लेकिन आईआईएस पर श्रोताओं को कोड के माध्यम से नहीं बनाया गया है, यह आईआईएस प्रशासन उपकरण के माध्यम से है, इसलिए शायद यह नहीं है कि आप क्या करने की कोशिश कर रहे हैं। आईआईएस सी # कोड से अलग है जिसे आप जोड़ रहे हैं।

2) यदि हां, तो हम इसे कैसे प्राप्त कर सकते हैं?

  • (58080 और 58081) की तरह कुछ अन्य portnumbers की कोशिश करो और "स्थानीय होस्ट" के साथ "IPAddress" की जगह का प्रयास करें। सबसे अधिक संभावना आपके पोर्ट संख्या कुछ अन्य वेब सर्वर

3) वहाँ ऐसा करने का कोई अन्य रास्ता नहीं है द्वारा किया जाता है?

आप उन वेब पृष्ठों की सेवा के लिए कोशिश कर रहे हैं, तो आप शायद अपने स्वयं के http सर्वर बनाने

आप कुछ कस्टम कर रहे हैं के बजाय एक WebApplication बनाने के लिए wan't, आप एक बार देख लेने के लिए चाहते हो सकता है WCF (विंडोज संचार फाउंडेशन), पर यह वेब, सॉकेट, webservices आदि के लिए नए ढांचे है और यह एमएस आगे जाने

2

अपने तत्काल प्रतिक्रिया :-)

पोर्ट नंबर था के लिए धन्यवाद क्या उपयोग किया जाएगा के रूप में मुसीबत। मैं 8080,8081,8082, आदि जैसे पोर्ट नंबरों का उपयोग कर रहा था। शायद इन बंदरगाहों का इस्तेमाल पहले से ही किया जा रहा था।

मैंने बंदरगाहों http://localhost:8080 और http://localhost/35124 के साथ प्रयास किया और यह काम किया।

एक बार फिर से आपके प्रतिक्रियाओं के लिए धन्यवाद।

धन्यवाद & सादर,

हरि

1

यह आमतौर पर एक अच्छा विचार है this पेज का शीघ्रता से अवलोकन लेने के लिए जब पोर्ट नंबर का उपयोग कर ... बस आप का उपयोग करने की कोशिश कर रहे हैं यकीन है कि एक अस्थायी नंबर बनाने के लिए पहले से उपयोग में नहीं है।