डिफ़ॉल्ट समापन बिंदु तत्व नहीं मिल सका


369

मैं एक VS2008 / .NET 3.5 समाधान के लिए एक webservice के लिए एक प्रॉक्सी जोड़ा है। क्लाइंट का निर्माण करते समय .NET इस त्रुटि को फेंकता है:

ServiceModel क्लाइंट कॉन्फ़िगरेशन अनुभाग में अनुबंध 'IMySOAPWebService' का संदर्भ देने वाले डिफ़ॉल्ट समापन बिंदु तत्व नहीं मिल सका। ऐसा इसलिए हो सकता है क्योंकि आपके एप्लिकेशन के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं मिली या क्योंकि इस अनुबंध से मेल खाने वाला कोई समापन बिंदु तत्व क्लाइंट तत्व में नहीं मिल सका।

इस त्रुटि के लिए खोज मुझे अनुबंध में पूर्ण नाम स्थान का उपयोग करने के लिए कहता है। यहाँ मेरा app.config पूरे नामस्थान के साथ है:

<client>
  <endpoint address="http://192.168.100.87:7001/soap/IMySOAPWebService"
            binding="basicHttpBinding" bindingConfiguration="IMySOAPWebServicebinding"
            contract="Fusion.DataExchange.Workflows.IMySOAPWebService" name="IMySOAPWebServicePort" />
</client>

मैं XP लोकल चला रहा हूं (मैं इसका उल्लेख करता हूं क्योंकि कई Google हिट्स win2k3 का उल्लेख करते हैं) app.config को app.exe.config में कॉपी किया जाता है, इसलिए यह भी समस्या नहीं है।

कोई सुराग?


यदि यह एक वेब सर्वर पर चल रहा है तो आपको .svc को जोड़ना होगा। उदाहरण: " 192.168.100.87:7001/soap/IMySOAPWebService.svc
डैरेन सी

सेवा एक .NET .NET सेवा नहीं है, यह वेबसर्वर पर नहीं चल रही है।
एडोसॉफ्ट

मैंने .NET में विकसित परियोजनाओं में इस समस्या को हल किया है, लेकिन मेरे पास VB6 में कुछ परियोजनाएं हैं और मुझे भी यही समस्या है। कोई विचार?
गेब्रियल इंट्रीगो

जवाबों:


588

"यह त्रुटि तब उत्पन्न हो सकती है यदि आप किसी क्लास लाइब्रेरी में सेवा को कॉल कर रहे हैं और किसी अन्य प्रोजेक्ट से क्लास लाइब्रेरी को कॉल कर रहे हैं।"

इस स्थिति में आपको मुख्य कॉन्फ़िगरेशन app.config में WS कॉन्फ़िगरेशन सेटिंग्स को शामिल करने की आवश्यकता होगी यदि इसका एक विनैप या web.config यदि यह एक वेब ऐप है। यह PRISM और WPF / सिल्वरलाइट के साथ भी जाने का रास्ता है।


1
यह मेरी विशिष्ट समस्या का कारण नहीं था, लेकिन मुझे यकीन है कि यह दूसरों की मदद करेगा। धन्यवाद
edosoft

9
क्या दोनों को स्वचालित रूप से मर्ज करने का कोई तरीका है? क्या होगा अगर क्लास लाइब्रेरी अपने कॉन्फ़िगरेशन को अपडेट करती है? क्या आप केवल उन सभी परियोजनाओं में कॉपी की गई कॉन्फ़िगर जानकारी को अपडेट करने के लिए याद कर रहे हैं जो इसे संदर्भित कर रही हैं? यह फिक्स डेवलपर की सतर्कता पर बहुत अधिक भरोसा करता है ...
सीन हैनली

1
मुझे WP7 ऐप के लिए एक ही त्रुटि मिल रही है (सिल्वरलाइट मुझे विश्वास है) और मुझे यह देखने में बहुत लंबा समय लगा कि ServiceReferences.ClientConfigयह परियोजना निर्देशिका में उत्पन्न हुई है। मेरी लाइब्रेरी में फ़ाइल से तत्वों <bindings>और <client>तत्वों को मेरे मुख्य ऐप में कॉपी करना (जो पहले खाली थे) चीजों को काम कर रहे थे।
डेविड मेसन

4
ऐसा होने का कारण (जैसा कि मैं इसे समझता हूं) यह है कि कॉन्फ़िगरेशन मानों को एक समाधान में मुख्य परियोजना से पढ़ा जाता है, हो सकता है कि वेब, winforms, wpf आदि। उदाहरण के लिए कहें कि आपके पास डेटाबेस तक पहुंचने के लिए एक क्लास लाइब्रेरी प्रोजेक्ट है, कनेक्शन प्रविष्टि क्लास लाइब्रेरी कॉन्फिगरेशन के बजाय मुख्य प्रोजेक्ट कॉन्फिगर में होना चाहिए।
सियारन ब्रुने

6
इसलिए हम यह निष्कर्ष निकाल सकते हैं कि यदि हम किसी लाइब्रेरी में WCF का उपयोग करते हैं, तो सीधे लिंक stackoverflow.com/questions/7688798/… की तरह सेटिंग्स को कोड करना बेहतर होगा ।
यंगजई

90

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

var remoteAddress = new System.ServiceModel.EndpointAddress(_webServiceUrl);

using (var productService = new ProductClient(new System.ServiceModel.BasicHttpBinding(), remoteAddress))
{
    //set timeout
    productService.Endpoint.Binding.SendTimeout = new TimeSpan(0,0,0,_webServiceTimeout);

    //call web service method
    productResponse = productService.GetProducts();
} 

संपादित करें

यदि आप https का उपयोग कर रहे हैं तो आपको BasicHttpsBindingइसके बजाय उपयोग करने की आवश्यकता है BasicHttpBinding


1
यह एक सहायक उत्तर है। मैं जिस वेब सेवा का उपयोग कर रहा हूं, उस पर कस्टम एंडपॉइंट को ऑब्जेक्ट की प्रारंभिक घोषणा में बाध्य होना पड़ा। अगर मैं इसे बाद में करने की कोशिश करता तो यह काम नहीं करता।
पॉल मोरेल

2
जितना मुझे संदेह है कि शीर्ष उत्तर ने चाल को भी किया हो सकता है, आपके समाधान ने काम किया है, और यह मेरे लिए अपनी खुद की कॉन्फिग फाइलों को एक साथ हैक करने के लिए बेहतर लगता है।
सैम मैं

एक आकर्षण काम करता है! मैं अपने ऐप के साथ "app.config" फ़ाइल वितरित करने के बजाय कोड में समापन बिंदु सेट करने में सक्षम होना पसंद करता हूं।
डैनियल जी

1
यदि यह एक Https वेब सेवा है, तो BasicHttpBinding () को BasicHttpsBinding () में परिवर्तित करना याद रखें
एंथनी

यह समाधान EXCEL-DNA जैसे अनुप्रयोगों के लिए सर्वोत्तम है जिसमें app.config या web.config नहीं है।
user781700

75

कई विकल्पों का परीक्षण करने के बाद, मैंने अंततः इसका उपयोग करके हल किया

अनुबंध = "IMySOAPWebService"

यानी विन्यास में पूर्ण नाम स्थान के बिना। किसी कारण से पूरा नाम ठीक से हल नहीं हुआ


3
ऐसा लगता है, कि अनुबंध का नाम ठीक उसी तरह लिखा जाना चाहिए जैसे ग्राहक। मेरे मामले में, मैंने तब var proxy = new ExternalServices.ServiceClient("MyServiceEndpoint");काम किया था जब मैंने नाम स्थान को अनुबंध में जोड़ा था:contract="ExternalServices.IMyService"
अनातोली मिरोनोव

यह मेरे लिए काम नहीं किया। मेरी समस्या थोड़ी अलग हो सकती है। मुझे यह त्रुटि समय-समय पर हमेशा नहीं मिलती है। मुद्दा क्या हो सकता है। क्या मिघट सेवा की ओर हो सकता है? _Thanks
albatross

57

मेरे पास यही मुद्दा है। यह पता चलता है कि एक वेब संदर्भ के लिए, आपको URL को निर्माता को पहले पैरामीटर के रूप में आपूर्ति करना होगा:

new WebService.WebServiceSoapClient("http://myservice.com/moo.aspx");

एक नई शैली वेब सेवा संदर्भ के लिए, आपको एक नाम देना होगा जो कॉन्फ़िगरेशन में एक समापन बिंदु प्रविष्टि को संदर्भित करता है:

new WebService.WebServiceSoapClient("WebServiceEndpoint");

में Web.configया इसी प्रविष्टि के साथ App.config:

<client>
      <endpoint address="http://myservice.com/moo.aspx"
        binding="basicHttpBinding" 
        bindingConfiguration="WebService"
        contract="WebService.WebServiceSoap"
        name="WebServiceEndpoint" />
    </client>
  </system.serviceModel>

"यह एक पुराने कार्यक्रम में काम किया" पर सुरंग दृष्टि को हटाने के लिए बहुत मुश्किल है ...


3
आह हा! इसने मेरे लिए इसे ठीक कर दिया, मैं पहले एक खाली कंस्ट्रक्टर का उपयोग कर रहा था, जो विफल रहा: नया WebService.WebServiceSoapClient (); // असफल
ट्रैविस

इस विलेन ने किया काम !!! लेकिन, मैं वास्तव में उत्सुक हूं कि डिफ़ॉल्ट अंत बिंदु लोड क्यों नहीं किया गया? क्या कारण हो सकते हैं किसी भी विचार?
दीप्ति मेहता

@ और पुराने धागे को लाने के लिए खेद है। क्या किसी का दूसरे पर कोई फायदा है - WebReference और ServiceReference? मुझे लगता है कि पूर्व मेरे लिए अधिक सुविधाजनक होगा लेकिन ServiceReference ठंडी नई चीज़ है जो मुझे लगता है ...
Kev

17

मेरे पास इस तरह की स्थिति थी, जहां मेरे पास था

  • WCF सेवा की मेजबानी कहीं
  • मुख्य परियोजना
  • कंज्यूमर प्रोजेक्ट ऑफ़ टाइप 'क्लास लाइब्रेरी' जिसमें WCF सर्विस का सर्विस रेफरेंस होता है
  • मुख्य परियोजना उपभोक्ता परियोजना से विधियों को बुलाती है

अब उपभोक्ता परियोजना में सभी संबंधित कॉन्फ़िगरेशन सेटिंग <system.serviceModel>मेरे app.config के टैग में थी, यह अभी भी उपरोक्त के रूप में एक ही त्रुटि फेंक रहा था।

मेरे द्वारा किए गए सभी टैग <system.serviceModel>को मेरी मुख्य परियोजना की ऐप.कॉन्फ़िग फ़ाइल में जोड़ा गया , और अंत में हम जाने के लिए अच्छे थे।

वास्तविक समस्या, जहाँ तक मेरे मामले में थी, वह गलत कॉन्फ़िगरेशन फ़ाइल को पढ़ रही थी। उपभोक्ता के ऐप .config के बजाय, यह मुख्य proj के विन्यास का जिक्र कर रहा था। मुझे यह पता लगाने में दो घंटे लग गए।


1
वही। <system.serviceModel>अपनी लाइब्रेरी में खोजें , फिर उसे अपने मुख्य एप्लिकेशन के एप्लिकेशन पर कॉपी करें ।config। क्लास लाइब्रेरी ऐप का सिर्फ एक और लक्षण है। रन टाइम में रीडिंग नहीं करना। मैं इस ओवरसो (imo) की भरपाई करने में बहुत समय लगाता हूं। अगर मैं पुस्तकालय को पढ़ना चाहता हूँ, तो यह app.config से कॉन्फिगर है, इसे जाने दो। अन्यथा, पहली जगह में वर्ग पुस्तकालयों के लिए एक app.config क्यों है ??
स्टीविन्क

15

"यह त्रुटि तब उत्पन्न हो सकती है यदि आप किसी क्लास लाइब्रेरी में सेवा को कॉल कर रहे हैं और किसी अन्य प्रोजेक्ट से क्लास लाइब्रेरी को कॉल कर रहे हैं।"

"इस मामले में आपको मुख्य कॉन्फ़िगरेशन app.config में WS कॉन्फ़िगरेशन सेटिंग्स शामिल करने की आवश्यकता होगी, अगर इसका एक winapp या web.config अगर यह एक वेब ऐप है। यह PRISM और WPF / सिल्वरलाइट के साथ भी जाने का तरीका है।"

हां, लेकिन यदि आप मुख्य परियोजना (उदाहरण के लिए ऑर्चर्ड सीएमएस) को नहीं बदल सकते हैं, तो आप अपने प्रोजेक्ट में डब्ल्यूसीएफ सेवा को कॉन्फ़िगर कर सकते हैं।

आपको क्लाइंट जेनरेशन मेथड के साथ सर्विस हेल्पर बनाने की जरूरत है:

public static class ServiceClientHelper
{
    public static T GetClient<T>(string moduleName) where T : IClientChannel
    {
        var channelType = typeof(T);
        var contractType = channelType.GetInterfaces().First(i => i.Namespace == channelType.Namespace);
        var contractAttribute = contractType.GetCustomAttributes(typeof(ServiceContractAttribute), false).First() as ServiceContractAttribute;

        if (contractAttribute == null)
            throw new Exception("contractAttribute not configured");

        //path to your lib app.config (mark as "Copy Always" in properties)
        var configPath = HostingEnvironment.MapPath(String.Format("~/Modules/{0}/bin/{0}.dll.config", moduleName)); 

        var configuration = ConfigurationManager.OpenMappedExeConfiguration(new ExeConfigurationFileMap { ExeConfigFilename = configPath }, ConfigurationUserLevel.None);
        var serviceModelSectionGroup = ServiceModelSectionGroup.GetSectionGroup(configuration);

        if (serviceModelSectionGroup == null)
            throw new Exception("serviceModelSectionGroup not configured");

        var endpoint = serviceModelSectionGroup.Client.Endpoints.OfType<ChannelEndpointElement>().First(e => e.Contract == contractAttribute.ConfigurationName);
        var channelFactory = new ConfigurationChannelFactory<T>(endpoint.Name, configuration, null);
        var client = channelFactory.CreateChannel();
        return client;
    }
}

और इसका उपयोग करें:

using (var client = ServiceClientHelper.GetClient<IDefaultNameServiceChannel>(yourLibName)) {
                ... get data from service ...
            }

इस लेख में विवरण देखें ।


15

यहां कई प्रतिक्रियाएं सही समाधान पर हिट करती हैं, जब आप एक क्लास फ़ाइल से सेवा को संदर्भित करने की मन-अस्पष्ट अस्पष्ट त्रुटि का सामना कर रहे हैं: अपने कंसोल या विंडोज़ ऐप के ऐप appconconig web.config में सेवा कॉन्फ़िगरेशन जानकारी कॉपी करें। उन उत्तरों में से कोई भी आपको यह दिखाने के लिए प्रतीत नहीं होता है कि हालांकि क्या कॉपी करना है। आइए कोशिश करते हैं और सही करते हैं।

यहाँ मैंने अपनी क्लास लाइब्रेरी की कॉन्फिगर फाइल को अपने कंसोल ऐप की कॉन्फिग फाइल में कॉपी कर लिया है, ताकि मैं "TranslServiceOutbound" नामक सेवा के लिए इस पागल त्रुटि को प्राप्त कर सकूँ।

आप मूल रूप से system.serviceModel सेक्शन के अंदर सब कुछ चाहते हैं :

  <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_ITranslationServiceOutbound" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://MyHostName/TranslationServiceOutbound/TranslationServiceOutbound.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ITranslationServiceOutbound"
    contract="TranslationService.ITranslationServiceOutbound" name="BasicHttpBinding_ITranslationServiceOutbound" />
</client>


14

इसने मुझे पागल कर दिया।

मैं WCF के साथ सिल्वरलाइट 3 प्रिज्म (CAB) का उपयोग कर रहा हूं

जब मैं प्रिज्म मॉड्यूल में WCF सेवा कहता हूं, तो मुझे वही त्रुटि मिलती है:

डिफ़ॉल्ट समापन बिंदु तत्व नहीं मिल सका जो सेवा मॉडल क्लाइंट कॉन्फ़िगरेशन अनुभाग में अनुबंध 'IMyService' का संदर्भ देता है। ऐसा इसलिए हो सकता है क्योंकि आपके एप्लिकेशन के लिए कोई कॉन्फ़िगरेशन फ़ाइल नहीं मिली थी या क्योंकि इस अनुबंध से मेल खाने वाला कोई अंतिम बिंदु क्लाइंट तत्व में नहीं मिला था

यह पता चला है कि इसकी खोज शेल में .xap फ़ाइल में ServiceReferences.ClientConfig फ़ाइल के लिए है, मॉड्यूल की ServiceReferences.ClientConfig फ़ाइल में नहीं। मैंने अपने सिल्वरलाइट शेल एप्लिकेशन (यह इसे स्वयं WCF सेवाओं को कहता है) में अपने समापन बिंदु और मौजूदा ServiceReferences.ClientConfig फ़ाइल में जोड़ा है।

तब मुझे अपने वेब प्रोजेक्ट के ClientBin फ़ोल्डर के लिए नई .xap फ़ाइल बनाने के लिए शेल ऐप को फिर से बनाना पड़ा।

अब कोड की यह लाइन आखिरकार काम करती है:

MyServiceClient myService = new MyServiceClient();

11

मुझे यह त्रुटि ASP.NET अनुप्रयोग के भीतर मिल रही थी जहाँ WCF सेवा को एक वर्ग पुस्तकालय में जोड़ा गया था जिसे बिन फ़ोल्डर में संदर्भित .dll फ़ाइल के रूप में ASP.NET अनुप्रयोग में जोड़ा जा रहा है। त्रुटि को हल करने के लिए, अनुप्रयोग लाइब्रेरी में config सेटिंग्स। वर्ग पुस्तकालय के भीतर फाइल WCF सेवा ASP.NET साइट / अनुप्रयोग के लिए web.config सेटिंग्स में कॉपी करने के लिए आवश्यक है।


जबकि अन्य जवाबों में एक ही समस्या का वर्णन हो सकता है। इस जवाब ने मेरी सटीक स्थिति का वर्णन किया और मैंने आखिरकार इस मुद्दे को समझा। मेरे दिन को बचाने के लिए धन्यवाद
Wouter Vanherck

10

मैंने पाया (साथ ही क्लाइंट UI के App.config की नकल करते हुए जैसा कि मैं एक क्लास लाइब्रेरी इंटरफ़ेस का उपयोग कर रहा था) मुझे सेवा के संदर्भ के नाम के साथ बाइंडिंग के नाम को उपसर्ग करना था (मेरा ServiceReferenceनीचे है)।

उदाहरण के लिए:

<endpoint address="http://localhost:4000/ServiceName" binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_ISchedulerService"
      contract="ServiceReference.ISchedulerService" 
      name="BasicHttpBinding_ISchedulerService" />

उत्पन्न डिफ़ॉल्ट के बजाय:

<endpoint address="http://localhost:4000/ServiceName" binding="basicHttpBinding"
      bindingConfiguration="BasicHttpBinding_ISchedulerService"
      contract="ISchedulerService" 
      name="BasicHttpBinding_ISchedulerService" />

1
मुझे भी यही काम करना था। मैं सच में समझ में क्यों नहीं आता।
ब्रिगेडियर

8

मुझे भी यही समस्या थी, लेकिन कॉन्ट्रैक्ट नेमस्पेस बदलने से मेरे लिए काम नहीं किया। इसलिए मैंने एक .Net 3.5 सेवा संदर्भ के बजाय एक .Net 2 शैली वेब संदर्भ की कोशिश की। वह काम किया।

विज़ुअल स्टूडियो 2008 में एक वेब संदर्भ का उपयोग करने के लिए, 'सेवा संदर्भ जोड़ें' पर क्लिक करें, फिर संवाद बॉक्स दिखाई देने पर 'उन्नत' पर क्लिक करें। इसमें आपको एक विकल्प मिलेगा जो आपको सेवा संदर्भ के बजाय वेब संदर्भ का उपयोग करने देगा।


2
यह वही है जो मैंने समाप्त कर दिया। मैं कामना करता हूं कि समस्या मुझे समझ में आए।
जारटेट विडमैन

यह मेरे लिए भी काम किया। अब मेरे पास मेरे समाधान में सभी अतिरिक्त रद्दी हैं (Settings.Settings, एक नया वेब सन्दर्भ फ़ोल्डर) बिना किसी अच्छे कारण के। अधिक समय होने पर मुझे वापस आना होगा और फिर से आना होगा।
माइक के

माना। मुझे भी यही समस्या थी, और इसे एक वेब संदर्भ में बदलकर ठीक किया।
स्टीफन होकिंग

7

एक गैर-लाइब्रेरी एप्लिकेशन का परीक्षण करने वाली इकाई जो एक सेवा का उपभोग करती है, इस समस्या का कारण बन सकती है।

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

इकाई परीक्षण परियोजना में सेवा संदर्भ जोड़ने से मेरी समस्या हल हो गई।


7

मेरे पास एक ऐसी स्थिति है जो इकाई परीक्षण में है। मैंने यूनिट परीक्षण परियोजना के लिए app.config फ़ाइल की प्रतिलिपि बनाई। इसलिए यूनिट टेस्ट प्रोजेक्ट में एंडपॉइंट जानकारी भी होती है।


2
मैंने पूरा app.config की प्रतिलिपि नहीं बनाई, लेकिन system.serviceModelअनुभाग। बस इतना ही!
kwrl

एक ही, सिवाय इसके कि मैं system.serviceModelएक सांत्वना अनुप्रयोग के app.config को कॉपी करता हूँ
अल्बाट्रॉसकैफ़

5

मैंने एक बार इस समस्या का सामना किया। ऐसा इसलिए था क्योंकि मैं अभी भी WCF सेवा का उपयोग करने वाले इंटरफ़ेस को विकसित कर रहा था। मैंने परीक्षण एप्लिकेशन को कॉन्फ़िगर किया और विकास जारी रखा। फिर विकास में, मैंने कुछ सेवाओं के नामस्थान बदल दिए। इसलिए मैंने WCF वर्ग से मिलान करने के लिए web.config में "system.serviceModel -> ग्राहक -> समापन बिंदु -> अनुबंध" की दोहरी जाँच की। तब समस्या हल हो जाती है।


4

आपके कॉन्फ़िगरेशन में नाम स्थान आपके क्लाइंट के डिफ़ॉल्ट नाम स्थान (प्रोजेक्ट प्रोजेक्ट में कॉन्फ़िगर किए गए) के बाद बाकी नामस्थान पथ को प्रतिबिंबित करना चाहिए। आपके पोस्ट किए गए उत्तर के आधार पर, मेरा अनुमान है कि आपके क्लाइंट को "Fusion.DataExchange.Workflows" नामस्थान में कॉन्फ़िगर किया गया है। यदि आपने क्लाइंट कोड को किसी अन्य नामस्थान पर स्थानांतरित कर दिया है, तो आपको शेष नामस्थान पथ से मेल करने के लिए कॉन्फ़िगरेशन को अपडेट करना होगा।


3

मैं एक ही Problem.I'm वर्ग पुस्तकालय और खिड़कियों से वर्ग पुस्तकालय बुला में WCF सेवा प्रयुक्त आवेदन project.but मैं बदलें भूल जाओ हूँ है <system.serviceModel>खिड़कियों आवेदन परियोजना के में कॉन्फ़िग फ़ाइल एक ही <system.serviceModel>कक्षा लाइब्रेरी के App.config फ़ाइल की।
समाधान: बाहरी प्रोजेक्ट का कॉन्फ़िगरेशन समान श्रेणी लाइब्रेरी के wcf कॉन्फ़िगरेशन।


3

नमस्ते, मैं एक ही समस्या का सामना करना पड़ा है, लेकिन सबसे अच्छा समाधान यह है कि .NET को आपके क्लाइंट साइड कॉन्फ़िगरेशन को कॉन्फ़िगर करने दें। जब मैं http: /namespace/service.svc? Wsdl = wsdl0 के क्वेरी स्ट्रिंग के साथ एक सेवा संदर्भ जोड़ता हूं तो मुझे यह पता चलता है कि यह क्लाइंट पक्ष पर कॉन्फ़िगरेशन समापन बिंदु नहीं बनाता है। लेकिन जब मैं wsdl-wsdl0 निकालता हूं और केवल url http: /namespace/service.svc का उपयोग करता हूं, तो यह क्लाइंट कॉन्फ़िगरेशन फ़ाइल में समापन बिंदु कॉन्फ़िगरेशन बनाता है। संक्षिप्त उपाय के लिए "? WSDL = WSDL0"।


3

सर्विस क्लाइंट डिक्लेरेशन लाइन को क्लास फील्ड के रूप में न रखें, इसके बजाय, प्रत्येक विधि पर उदाहरण बनाएं, जिसमें इस्तेमाल किया गया है। इसलिए समस्या ठीक हो जाएगी। यदि आप वर्ग क्षेत्र के रूप में सेवा ग्राहक उदाहरण बनाते हैं, तो डिज़ाइन टाइम एरर होता है!


3

यदि आप PRISM फ्रेमवर्क का उपयोग करके WPF एप्लिकेशन का उपयोग कर रहे हैं, तो कॉन्फ़िगरेशन आपके स्टार्ट अप प्रोजेक्ट में मौजूद होना चाहिए (यानी उस प्रोजेक्ट में जहां आपका बूटस्ट्रैपर रहता है।)


2

यह त्रुटि तब उत्पन्न हो सकती है यदि आप किसी क्लास लाइब्रेरी में सेवा को कॉल कर रहे हैं और किसी अन्य प्रोजेक्ट से क्लास लाइब्रेरी को कॉल कर रहे हैं।


2

इस समस्या को बनाने / ठीक करने के कई तरीके प्रतीत होते हैं। मेरे लिए, मैं जिस CRM उत्पाद का उपयोग कर रहा हूं, वह मूल कोड में लिखा गया था और मेरे .NET dll को कॉल करने में सक्षम है, लेकिन मैं मुख्य एप्लिकेशन के ऊपर / ऊपर होने के लिए आवश्यक कॉन्फ़िगरेशन जानकारी में भाग लेता हूं। मेरे लिए, CRM एप्लिकेशन .NET नहीं है, इसलिए मैंने इसे अपनी मशीन में डालने के लिए समाप्त कर दिया है। फाइल फ़ाइल (जहां मैं चाहता हूं कि यह नहीं है)। इसके अलावा, चूँकि मेरी कंपनी Websense का उपयोग करती है, इसलिए 407 प्रॉक्सी प्रमाणीकरण आवश्यक समस्या के कारण सेवा संदर्भ को जोड़ने के लिए मेरे पास एक कठिन समय था, जो कि मशीन में संशोधन के लिए आवश्यक था।

प्रॉक्सी समाधान:

काम करने के लिए WCF सेवा संदर्भ प्राप्त करने के लिए मुझे अपने DLL के एप्लिकेशन से जानकारी को मुख्य एप्लिकेशन कॉन्फिगर करने के लिए कॉपी करना था (लेकिन मेरे लिए जो मशीन थी ।config)। और मुझे उसी फ़ाइल में समापन बिंदु की जानकारी भी कॉपी करनी थी। एक बार मैंने ऐसा किया कि यह मेरे लिए काम करने लगा।


2

ठीक है। मेरा मामला थोड़ा अलग था, लेकिन आखिरकार मैंने इसके लिए तय कर लिया है: मेरे पास एक Console.EXE है -> DLL -> Invoke WS1 -> DLL -> WS2 को आमंत्रित करना

मेरे पास WS1 के सेवा मॉडल के दोनों विन्यास हैं, और WS2 Console.EXE.config में अनुशंसित हैं। - मुद्दा हल नहीं किया।

लेकिन यह तब भी काम नहीं आया, जब तक कि मैंने WS2 के WSR का संदर्भ WS1 में नहीं जोड़ा और न केवल उस DLL को जो वास्तव में WS2 के प्रॉक्सी को बना और इनवॉइस कर रहा था।


2

यदि आप अपनी कक्षा की लाइब्रेरी में वेब सेवा का संदर्भ देते हैं तो आपको अपने विंडोज़ एप्लिकेशन या कंसोल एप्लिकेशन में ऐप.कॉन्फ़िग कॉपी करना होगा

समाधान: बाहरी परियोजना के विन्यास को उसी पुस्तकालय के wcf विन्यास में बदलें।

मेरे लिए काम किया


2

मेरे पास एक ही मुद्दा
था मैं डेस्कटॉप ऐप का उपयोग कर रहा था और ग्लोबल वेदर वेब सेवा का उपयोग कर रहा था

मैंने सेवा संदर्भ हटा दिया है और वेब संदर्भ और समस्या को जोड़ा है धन्यवाद


2

मेरे लिए समाधान क्लाइंट वेब में एंडपॉइंट नाम विशेषता से समापन बिंदु नाम को हटाने के लिए था। यह प्रॉक्सी प्रॉक्सी का उपयोग करने की अनुमति देता है

ChannelFactory<TService> _channelFactory = new ChannelFactory<TService>("");

केवल पूरे दिन के लिए बाहर काम करने के लिए ले लिया। यह फिक्स होने के बाद भी अनुबंध का नाम गलत था, हालांकि प्रारंभिक त्रुटि दिखाई देने पर यह गलत था। अनुबंध नाम के लोगों के लिए डबल तो ट्रिपल चेक तार !! अट्रिब: इयान


2

मुझे एक और चीज़ जोड़ने की अनुमति दें। ( टॉम हैघ का उत्तर पहले से ही इसका पालन करता है, लेकिन मैं स्पष्ट होना चाहता हूं)

मेरी web.configफ़ाइल को निम्नलिखित परिभाषित किया गया था:

<protocolMapping>
    <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

मैं पहले से ही एक संदर्भ के लिए basicHttpsBinding का उपयोग कर रहा था, लेकिन फिर मैंने एक नया संदर्भ जोड़ा, जिसके लिए basicHttpBinding (सं) की आवश्यकता थी। मुझे जो कुछ करना था, वह protocolMappingइस प्रकार था:

<protocolMapping>
    <add binding="basicHttpBinding" scheme="http" />
    <add binding="basicHttpsBinding" scheme="https" />
</protocolMapping>

जैसा कि LR सही ढंग से बताता है, इसे सही स्थानों में परिभाषित करने की आवश्यकता है। मेरे लिए, इसका मतलब है कि मेरी यूनिट टेस्ट परियोजना के ऐप में से एक है ।config और मुख्य सेवा परियोजना के web.config में से एक।


2

वैश्विक त्रुटि ऑपरेटर के बिना कॉन्फ़िगरेशन फ़ाइल तत्व में अनुबंध का उल्लेख करते समय मुझे यह त्रुटि हुई थी।

अर्थात

<endpoint contract="global::MyNamepsace.IMyContract" .../>

काम करता है, लेकिन

<endpoint contract="MyNamepsace.IMyContract" .../>

"डिफ़ॉल्ट एंडपॉइंट तत्व नहीं ढूँढ सकता है जो अनुबंध को संदर्भित करता है" त्रुटि।

MyNamepsace.IMyContract युक्त असेंबली मुख्य अनुप्रयोग के लिए एक अलग असेंबली में है, इसलिए यह वैश्विक स्कोप रिज़ॉल्यूशन का उपयोग करने की आवश्यकता समझा सकता है।


2

जब आप एक सेवा संदर्भ जोड़ रहे हैं

यहां छवि विवरण दर्ज करें

आपके द्वारा लिखे जा रहे नामस्थान से सावधान रहें:

यहां छवि विवरण दर्ज करें

आपको इसे अपने इंटरफ़ेस के नाम से जोड़ना चाहिए:

<client>
  <endpoint address="http://192.168.100.87:7001/soap/IMySOAPWebService"
            binding="basicHttpBinding" 
            contract="MyNamespace.IMySOAPWebService" />
</client>

2

मुझे एक ही त्रुटि मिली और मैंने कई चीजों की कोशिश की, लेकिन काम नहीं किया, मैंने देखा कि मेरा "अनुबंध" सभी परियोजनाओं पर समान नहीं था, मैंने अनुबंध को बदल दिया क्योंकि समाधान के अंदर सभी परियोजनाओं के लिए समान होगा और इससे काम किया जाएगा। यह प्रोजेक्ट ए है

<client>
    <endpoint address="https://xxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference.IIntegrationService" name="basic" />
</client>

प्रोजेक्ट बी:

<client>
    <endpoint address="xxxxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="ServiceReference1.IIntegrationService" name="basic" />
</client>

अंत में मैं दोनों के लिए बदल गया:

<client>
    <endpoint address="https://xxxxxxxxxxx" binding="basicHttpBinding" bindingConfiguration="basic" contract="MyServiceReferrence.IIntegrationService" name="basic" />
</client>

1

मेरे पास एक ही मुद्दा था और यह केवल तभी हल किया गया था जब होस्ट एप्लिकेशन और उस एंडपॉइंट का उपयोग करने वाले dll का एक ही सेवा संदर्भ नाम था।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.