2009-02-22 12 views
11

मुझे आईआईएस में WebServiceHostFactory का उपयोग करने में समस्या आती है।वेब सेवाहोस्ट फैक्टरी और आईआईएस प्रमाणीकरण

"आईआईएस निर्दिष्ट प्रमाणीकरण योजनाएं 'एकीकृत विन्डोज़ प्रमाणीकरण, बेनामी', लेकिन बाध्यकारी केवल एक प्रमाणीकरण योजना के विनिर्देश का समर्थन करता है। मान्य प्रमाणीकरण योजनाएं डायजेस्ट, नेगोशिएट, एनटीएलएम, बेसिक, या बेनामी हैं। आईआईएस सेटिंग्स बदलें ताकि केवल एक एकल प्रमाणीकरण योजना का उपयोग किया जाता है। "

I wanted to keep both authentication schemes and managed to do so by not using the factory but setting up the endpoint manualy in web.config.

मेरा प्रश्न क्या WebServiceHostFactory इस परिणाम प्राप्त करने के लिए कर रहा है? मैं इस धारणा के तहत था कि WebServiceHostFactory उसी वेब पर बाध्यकारी सेट करेगा जो कि मेरी कॉन्फ़िगरेशन में उपयोग किया जाता है।

संपादित करें: मैंने परावर्तक में WebServiceHostFactory को देखा है और यह कुछ भी चालाक नहीं कर रहा है। यह WebServiceHost के लिए बस एक साधारण कारखाना है।

क्या आईआईएस अभी भी एक सेवा होस्ट का उपयोग करता है यदि आप कॉन्फ़िगरेशन में एंडपॉइंट सेट करते हैं? या WebServiceHost चीजों को अलग-अलग सेट कर रहा है।

उत्तर

3

यह मेरे लिए काम करता है। नीचे दिखाए गए एक डमी एंडपॉइंट को जोड़ना (सर्विस होस्ट खोला जाने से पहले) जैसा कि नीचे दिखाया गया है कि चाल चल रही है। (यह MSDN लेख इस http://msdn.microsoft.com/en-us/library/bb412178.aspx की ओर संकेत किया।)

public class MyWebServiceHost : WebServiceHost 
{ 
    public MyWebServiceHost (Type serviceType, params Uri[] baseAddresses) : base(serviceType, baseAddresses) 
    { 
     // Inserting this dummy endpoint config seemingly does the trick: 
     AddServiceEndpoint(typeof(IMyContract), new WebHttpBinding(), string.Empty); 
    } 

    protected override void ApplyConfiguration() 
    { 
     // Typical programmatic configuration here per: 
     // http://msdn.microsoft.com/en-us/library/aa395224.aspx 
    } 
} 

मेरा अनुमान है कि यह एक डिफ़ॉल्ट endpoint बनाने, और इस प्रकार की कार्यक्षमता का एक समूह को बंद करने से WebServiceHost से बचाता है।

+0

मैं इस जवाब का परीक्षण करने में सक्षम नहीं हूं क्योंकि यह कुछ समय पहले पूछा गया था और मैंने समस्या के आसपास काम किया और फिर एक नया काम मिला लेकिन यदि आप कहते हैं कि यह काम करता है तो यह मेरे लिए काफी अच्छा है। –

+0

मुझे समझ में नहीं आता कि मुझे कहां संदर्भ देना चाहिए कि MyWebServiceHost – JDC

+0

मुझे एक ही समस्या थी और मैं इसे काम करने में सक्षम था। मुझे दो वर्ग लिखना पड़ा: 'MyWebServiceHostFactory' और' MyWebServiceHost'। फैक्ट्री क्लास में, मैंने 'सर्विसहोस्ट CreateServiceHost (टाइप सर्विस टाइप, उरी [] बेस एड्रेस)' विधि को ओवरराइड किया और इसे 'MyWebServiceHost' का एक उदाहरण वापस कर दिया। 'MyWebServiceHost' इस उत्तर में से एक जैसा दिखता है, लेकिन मैंने' ApplyConfiguration() 'को ओवरराइड नहीं किया है। –

1

मुझे WebServiceHostFactory के बारे में निश्चित नहीं है, लेकिन ऐसा लगता है कि आप आईआईएस के अंदर सेवा होस्ट कर रहे हैं और इसे एक से अधिक प्रमाणीकरण विधि चयनित हैं। यदि आपके पास आईआईएस 5 या 6 है, तो आईआईएस में जाने और वेबसाइट या वर्चुअल निर्देशिका के लिए अपनी सेवाओं वाली संपत्तियों को देखने का प्रयास करें। निर्देशिका सुरक्षा टैब पर जाएं, "अनाम पहुंच और प्रमाणीकरण नियंत्रण" के अंतर्गत संपादित करें बटन पर क्लिक करें, और उसके बाद "अनाम पहुंच" या "एकीकृत विंडोज प्रमाणीकरण" को अन-टिक करें। मुझे आईआईएस 7 के बारे में निश्चित नहीं है।

+1

कि के साथ समस्या यह है कि आप तो ** एक डिबग नहीं कर सकता है की जरूरत नहीं है गुमनाम रूप से पहुंचा ** वेबसाइट। एक ** असंतोषजनक ** आईआईएस में, दूसरे को स्विच करने से ठीक पहले, एक ही प्रमाणीकरण के साथ संकलन करना है। यह काम करता है लेकिन समय बर्बाद और परेशान है। मैंने देखा है कि .NET 3.5 साइटें इस समस्या के बिना वर्षों से विकसित हुई हैं। .NET 4 साइटों के साथ मेरा अनुभव खराब हो गया है। _ (MSBuild फ़ाइल से वेब साइट प्रमाणीकरण को बदलने की संभावना है, लेकिन मुझे ऐसा करने के लिए एक तैयार निर्मित कार्य नहीं मिला।) _ –

+0

जिसने मेरे लिए चाल की, महान खोज! – Adi

+1

क्षमा करें लेकिन कहा जाता है कि वह दोनों प्रमाणीकरण योजनाएं रखना चाहता था ... आपका जवाब उस संबंध में सहायक नहीं था। – LDAdams

1

आईआईएस 7 के तहत आपको शायद यह नहीं पता कि आप एकीकृत विंडोज प्रमाणीकरण सेटिंग कहां प्रबंधित कर सकते हैं। IIS7 प्रबंधन कंसोल में सेटिंग देखने के लिए, आपको निम्न आलेख में वर्णित चरणों का पालन करना होगा: http://msdn.microsoft.com/en-us/library/x8a5axew.aspx (शीर्षक: "त्रुटि: डिबगिंग विफल क्योंकि एकीकृत विंडोज प्रमाणीकरण सक्षम नहीं है", यदि लिंक कार्यात्मक नहीं है)।

उम्मीद है कि यह मदद करता है।

-1

web.config- में अक्षम सुरक्षा> विन्यास टैग

<system.serviceModel> 
    <bindings> 
     <webHttpBinding> 
     <binding> 
      <security mode="None"> 
      <transport clientCredentialType="Windows"/> 
      </security> 
     </binding> 
     </webHttpBinding> 
    </bindings> 
    </system.serviceModel> 

फिर अपने WCF सेवा प्रमाणीकरण ...

+0

यह सिर्फ कुछ कोड है ... कृपया कुछ स्पष्टीकरण प्रदान करें। यह सवाल का जवाब नहीं है। –

+0

उत्तर देने पर आपको वास्तव में कुछ प्रकार के स्पष्टीकरण (केवल कोड नमूना के बजाय) प्रदान करने की आवश्यकता है। –

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