2009-10-07 11 views
5

पर आईओएस पर एक एएसपी.नेट वेब सेवा है, जो पोर्ट 8080 पर काम कर रही है। पोर्ट 80 पर मेरे पास अपाचे है, जो कुछ वेबसाइटों को आईआईएस पर रीडायरेक्ट कर रहा है।एएसपी.नेट वेब सेवा

इस मामले में, मैं वेब सेवा पृष्ठ (http://example.com/service/) तक पहुंच सकता हूं, जो मुझे सभी विधियों को उपलब्ध कराता है। हालांकि, जब मैं किसी विधि को आमंत्रित करने का प्रयास करता हूं, तो यह इस तरह के एक वेब पेज पर जाता है: http://example.com:8080/service/Service1.asmx/Method। बेशक कि एक सार्वजनिक पहुंच कोई परिणाम नहीं देख सकता है, पोर्ट 8080 अवरुद्ध है और खोला नहीं जा सकता है।

आंतरिक रूप से, वेब सेवा पोर्ट 8080 पर काम करता है, लेकिन जनता के अनुरोध बंदरगाह 80

किसी को भी जानता है के लिए किया जाना करने के लिए कैसे मैं अपने समस्या को हल कर सकते हैं की जरूरत है?

पुनश्च: Windows सर्वर के तहत आईआईएस 7 और Apache 2.2 का उपयोग करते हुए 2008

+0

क्या यूआरएल आप क्लाइंट पर डबल्यूएसडीएल प्राप्त करने के लिए उपयोग कर रहे हैं? – Kev

उत्तर

3

इस का सर्वाधिक संभावित कारण अपने वेब सेवा उत्पन्न कि डबल्यूएसडीएल के रूप में सेवा समाप्ति बिंदु का पता परिभाषित करेगा है:

http://example.com:8080/service/service1.asmx

आप एक अलग स्थिर डबल्यूएसडीएल परिभाषा प्रदान करते हैं और निम्नलिखित खंड पोर्ट 80 उपयोग करने के लिए संशोधित कर सकते हैं:

<wsdl:service name="Service1"> 
    <wsdl:port name="Service1Soap" binding="tns:Service1Soap"> 
     <soap:address location="http://example.com:8080/service/service1.asmxx" /> 
    </wsdl:port> 
    <wsdl:port name="Service1Soap12" binding="tns:Service1Soap12"> 
     <soap12:address location="http://example.com:8080/service/service1.asmx" /> 
    </wsdl:port> 
</wsdl:service> 

यह क्लाइंट को डब्लूएसडीएल का उपभोग करने और सही बंदरगाह से बांधने के लिए स्टब कोड उत्पन्न करना चाहिए (जो अपाचे सर्वर प्रॉक्सी के रूप में कार्य कर रहा है)।

Modify a Web Service's WSDL Using a SoapExtensionReflector

मैं ऊपर का इस्तेमाल किया है:

उत्पन्न WDSL में प्रदर्शित करने के सही पते के लिए मजबूर करने के लिए एक वैकल्पिक विधि SoapExtensionReflector उपयोग करने के लिए मक्खी पर पता location संशोधित करने के लिए है अतीत में विधि सफलतापूर्वक।

वैकल्पिक रूप से, आप, अगर ग्राहक नेट आधारित है, बुनियादी URL सेवा के लिए रद्द कर सकते थे:

WebClientProtocol.Url Property (MSDN Library)

+0

मैंने पहले से ही SoapExtensionReflector समाधान लागू किया है। यदि आप डब्लूएसडीएल का उपभोग करते हैं तो यह काम कर सकता है, लेकिन इस उदाहरण पर मैं एएसपी.नेट से उत्पन्न क्लाइंट का उपयोग कर रहा हूं, जो पोर्ट 8080 पर सेवा का उपभोग करने की कोशिश करता है लेकिन इसे बनाने की अनुमति नहीं है! –

+0

क्लाइंट पर डब्लूएसडीएल प्राप्त करने के लिए आप किस यूआरएल का उपयोग कर रहे हैं? – Kev

+0

अभी, WSDL फ़ाइल का उपयोग कर वेब सेवा का उपभोग ठीक काम करता है, क्योंकि मैंने डब्लूएसडीएल पर बंदरगाह बदल दिया है। हालांकि, वेब इंटरफेस जो एएसपी.NET उत्पन्न होता है काम नहीं करता है क्योंकि यह अभी भी गलत बंदरगाह (8080) का उपयोग कर रहा है। –

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