2010-09-20 31 views
6

का उपयोग करते समय डब्लूएसडीएल हाइपरलिंक में गलत यूआरएल मुझे अपनी डब्लूसीएफ सेवा एचटीटीपीएस के साथ चल रही है, यह इन्फोपेज दिखाती है, लेकिन नीचे दिए गए यूआरएल "इस सेवा का परीक्षण करने के लिए ... निम्नलिखित वाक्यविन्यास के साथ:" है:WCF (https)

svcutil.exe https://servername.group.service.com/MyService.svc?wsdl (सर्वर का पूरा पता)

सही URL https://my.service.com/MyService.svc?wsdl (सौंपा hostheader) के बजाय

, मैं इसे कैसे सही URL (<URL of the Service> + ?wsdl) दिखाने के लिए मिल सकता है?

<services> 
    <service name="MyService" behaviorConfiguration="MyServer.MyServiceBehavior"> 
    <endpoint binding="basicHttpBinding" bindingConfiguration="basicHttpBigStrings" contract="IMyService"> 
    </endpoint> 
    <endpoint address="mex" binding="mexHttpsBinding" contract="IMetadataExchange"/> 
    </service> 
</services> 
<behaviors> 
    <serviceBehaviors> 
    <behavior name="MyService.MyServiceBehavior"> 
     <serviceCredentials> 
     <serviceCertificate findValue="my.service.com" x509FindType="FindBySubjectName"/> 
     </serviceCredentials> 
     <serviceMetadata httpsGetEnabled="true"/> 
     <serviceDebug includeExceptionDetailInFaults="true"/> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 
<bindings> 
    <basicHttpBinding> 
    <binding name="basicHttpBigStrings"> 
     <security mode="Transport"> 
     <transport clientCredentialType="None"/> 
     </security> 
     <readerQuotas maxStringContentLength="1048576" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

मैं पहले से ही <serviceMetadata httpsGetEnabled="true" httpsGetUrl="https://my.service.com/MyService.svc"/> में <serviceMetadata httpsGetEnabled="true"/> बदलने की कोशिश की, लेकिन यह सिर्फ कहते हैं: "एक पंजीकरण पहले से ही यूआरआई https://my.service.com/MyService.svc के लिए मौजूद है"

+0

मुझे एक ही समस्या है। क्या आपको इस पर कोई समाधान मिला? – Turrau

+0

नहीं, अभी तक नहीं, क्षमा करें ... – Hinek

+0

क्या आप इस सेवा को आईआईएस में होस्ट कर रहे हैं? यदि ऐसा है, तो आईआईएस निर्धारित करता है कि यूआरएल, डब्ल्यूसीएफ नहीं। –

उत्तर

4

आप निर्दिष्ट के लिए आप होस्ट हैडर सेट कर लिया है कि डबल्यूएसडीएल ठीक कर देंगे। क्या यह एसएसएल या बस एचटीपी के लिए सेट है। याद रखें, आईआईएस यूआई में एसएसएल के लिए होस्ट-हेडर सेट करने के लिए फ़ील्ड नहीं हैं। आपको आईआईएस के बाद के संस्करण के लिए व्यवस्थापक स्क्रिप्ट्स (आईआईएस 6.0) या netsh.exe का उपयोग करना होगा।

+1

होस्ट हेडर केवल एचटीपी के लिए सेट है, क्या आपके पास एसएसएल के लिए होस्ट हेडर सेट करने के लिए लिंक हैं? – Hinek

+1

यह समस्या का समाधान कैसे है? –

+0

अमित - धन्यवाद !! समाधान के लिए घंटों और घंटों के बाद, यह चाल थी। हमने लोड लोडर कॉन्फ़िगरेशन को समायोजित करने के लिए http और https दोनों के लिए होस्ट हेडर हटा दिए थे। समस्या को ठीक करने में उन्हें वापस जोड़ना। वैसे, हम HTSPS पर WSDL का अनुरोध करने का प्रयास करते समय 400 खराब अनुरोध त्रुटि के साथ एक खाली पृष्ठ भी देख रहे थे (किसी भी समस्या का सामना करने वाले किसी के लिए)। – adamisnt

0

आप निम्न StackOverflow link में इस पर कुछ पृष्ठभूमि पा सकते हैं - पहली बात मैं कोशिश करेंगे (वे कई अलग-अलग परिदृश्य प्रदान करते हैं जो थोड़ा अधिक शामिल हैं) सेवा एंडपॉइंट परिभाषा पर सुनो यूआरआई सेट करना होगा। जब मुझे अपने ऐप में डब्लूएसडीएल पता सही होने में समस्याएं आईं तो मैं इसे ठीक करने के लिए इसे सेट करने में सक्षम था। उस स्थिति में मैं बस इस योजना को ठीक करने की कोशिश कर रहा था (हम एक बिगिप के पीछे थे और यह एसएसएल को समाप्त कर रहा था, इसलिए इस योजना को https होने की आवश्यकता थी, भले ही सर्वर पक्ष पर डब्ल्यूसीएफ ने सोचा कि यह http प्राप्त कर रहा था)।

<endpoint address="https://www.sslloadbalancer.com" binding="someBinding" contract="IMyServiceInterface" listenUri="http://www.servicehost.com" ... /> 

मेरा मानना ​​है कि आप

+0

सेवा आईआईएस में होस्ट की जाती है, इसलिए आईआईएस यूआरएल निर्धारित करता है, मैं कॉन्फ़िगरेशन में एंडपॉइंट पता मैन्युअल रूप से सेट नहीं कर सकता। – Turrau

+0

मेरा उदाहरण आईआईएस होस्टेड सेवाओं से है - आपको पता है कि आईआईएस पर आप अपनी सेवा तैनात कर रहे हैं तो आप कॉन्फ़िगरेशन में एंडपॉइंट एड्रेस क्यों सेट नहीं कर सकते? – HintonBR

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