c# - डब्ल्यूसीएफ त्रुटि: इस कारखाने पर मैन्युअल एड्रेसिंग सक्षम है, इसलिए भेजे गए सभी संदेश पूर्व-संबोधित किए जाने चाहिए




wcf messages (4)

तो यह अंत में खत्म हो गया है!

ब्रायन - इस पर आपके मार्गदर्शन के लिए धन्यवाद। बाइंडिंग क्लाइंट और सर्वर को गलत तरीके से गठबंधन कर रहे थे, और अंततः मैं निम्नलिखित में निम्नलिखित के साथ आगे बढ़ गया:

  <basicHttpBinding>
    <binding name="TransportSecurity">
      <security mode="Transport">
        <transport clientCredentialType="None"/>
      </security>
    </binding>
  </basicHttpBinding> 

... और उनके एंडपॉइंट बाध्यकारी और बाध्यकारी कॉन्फ़िगरेशन विशेषताएँ तदनुसार सेट करें:

   <endpoint binding="basicHttpBinding" 
             bindingConfiguration="TransportSecurity"
             contract="ServiceReference1.IService" 
             name="WebHttpBinding_IService" 
             address="https://mysslserver.com/Service.svc" />

चूंकि यह मेरे लिए अपेक्षाकृत नया टर्फ है, सिर्फ यह बताएं कि क्यों उन त्रुटियों को पॉप अप करना सही दिशा में मुझे ले जाता है :)।

मुझे एक होस्टेड डब्ल्यूसीएफ सेवा मिली है जिसके लिए मैंने एक कस्टम फैक्ट्री बनाई है, ताकि यह एकाधिक होस्ट हेडर के साथ काम करे:

/// <summary>
/// Required for hosting where multiple host headers are present
/// </summary>
public class MultipleHostServiceFactory : ServiceHostFactory
{
    protected override ServiceHost CreateServiceHost(Type serviceType, Uri[] baseAddresses)
    {
        List<Uri> addresses = new List<Uri>();
        addresses.Add(baseAddresses[0]);
        return base.CreateServiceHost(serviceType, addresses.ToArray());
    }
}

मुझे पूरा यकीन है कि मेरी कॉन्फ़िगरेशन फ़ाइलें अब क्लाइंट और सर्वर दोनों पर सही हैं ( यहां देखी जा सकती हैं )।

मुझे लगता है कि त्रुटि कारखाने से संबंधित प्रतीत होता है:

इस कारखाने पर मैन्युअल एड्रेसिंग सक्षम है, इसलिए भेजे गए सभी संदेश पूर्व-संबोधित किए जाने चाहिए।

public string GetData(int value) {
    return base.Channel.GetData(value);
}

त्रुटि लाइन return base.Channel.GetData(value); पर होती है। return base.Channel.GetData(value);


मुझे नहीं लगता कि यह आपके कारखाने के साथ जरूरी है।

देख

http://msdn.microsoft.com/en-us/library/system.servicemodel.channels.transportbindingelement.manualaddressing.aspx

या "मैनुअलड्रेसिंग" के लिए पहले कुछ बिंग हिट के बीच अन्य। ऐसा लगता है कि बाध्यकारी इस्तेमाल किया जा रहा है स्टैक / मैसेजिंग तर्क के कुछ अन्य हिस्से के साथ असंगत है।


मैंने सामान्य रूप से एक सेवा संदर्भ जोड़ा और यह त्रुटि मिली। वेबhttp निर्दिष्ट व्यवहार के साथ एंडपॉइंट कॉन्फ़िगरेशन का उपयोग करने के लिए क्लाइंट कॉन्फ़िगरेशन में संशोधन करना मुझे बस इतना करना था

<client>
  <endpoint address="http://localhost:9000/GeoConverterService/GeoConverterService.svc"
            binding="webHttpBinding" 
            contract="GeoConverter.IGeoConverterService" 
            behaviorConfiguration="webhttp"/>
</client>

<behaviors>
  <endpointBehaviors>
    <behavior name="webhttp">
      <webHttp/>
    </behavior>
  </endpointBehaviors>
</behaviors>


हां जेसन मार्डेल ने जवाब मेरे लिए भी काम किया, मेरा बाध्यकारी एक व्यवहार को इंगित नहीं करता था। तो बाध्यकारी में मैंने जोड़ा: behaviorConfiguration="webhttp"