Не удалось найти элемент конечной точки по умолчанию, который ссылается на контракт в разделе конфигурации клиента ServiceModel

Я создал службу WCF, и файл Web.Config имеет следующие настройки.

 <system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxReceivedMessageSize="2147483647" messageEncoding="Text" sendTimeout="10:00:00" openTimeout="10:00:00">
      <readerQuotas maxDepth="2000000" maxStringContentLength="2147483647" maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
    </binding>
  </basicHttpBinding>
</bindings>
<behaviors>
  <serviceBehaviors>
    <behavior>
      <!-- To avoid disclosing metadata information, set the values below to false before deployment -->
      <serviceMetadata httpGetEnabled="true" httpsGetEnabled="true"/>
      <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
      <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
  </serviceBehaviors>
</behaviors>
<services>
  <service name="Axis.OptimizationService.RMSCalculationService">
    <endpoint address="" binding="basicHttpBinding" contract="Axis.RMS.Optimization.Contracts.IRMSCalculationService"></endpoint>
  </service>
</services>
<protocolMapping>
    <add binding="basicHttpsBinding" scheme="https"/>
</protocolMapping>    
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"  minFreeMemoryPercentageToActivateService="0"/>

In my ClassLibrary project, I have created Servcie reference with the name CatpricingService and the app.config file looks as below.

<system.serviceModel>
<bindings>
  <basicHttpBinding>
    <binding name="BasicHttpBinding_IRMSCalculationService" closeTimeout="00:30:00"
        openTimeout="00:30:00" receiveTimeout="00:30:00" sendTimeout="01:00:00"
        maxBufferPoolSize="0" maxReceivedMessageSize="2147483647"
        useDefaultWebProxy="true" />
  </basicHttpBinding>
</bindings>
<client>
  <endpoint address="http://localhost:2200/RMSCalculationService.svc"
    binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_IRMSCalculationService"
    contract="CatPricingService.IRMSCalculationService"  name="BasicHttpBinding_IRMSCalculationService" />
</client>

I am not sure what I am doing wrong here. I did this several times. I could not figure out what the error is. To me all settings seems correct. I am getting this error.

Could not find default endpoint element that references contract 'CatPricingService.IRMSCalculationService' in the ServiceModel client configuration section. This might be because no configuration file was found for your application, or because no endpoint element matching this contract could be found in the client element.

Я сослался на другие вопросы по Stackoverflow ... Я схожу с ума от этого. Кто-нибудь может понять, что не так с моими настройками?

Здесь мой проект ClassLibrary работает с внешней программой excel.exe. (Свойства проекта, вкладка «Отладка», выбрано «Запустить внешнюю программу» и присвоено значение C: \ Program Files \ Microsoft Office \ Office14 \ EXCEL.EXE.

Спасибо


person Ritha    schedule 28.12.2016    source источник
comment
Вы упоминаете app.config, этот app.config находится внутри вашего проекта ClassLibrary или в другом проекте, который ссылается на вашу ClassLibrary?   -  person Kim Hoang    schedule 28.12.2016
comment
Этот файл app.config находится только в проекте ClassLirary.   -  person Ritha    schedule 28.12.2016
comment
хорошо, поэтому, пожалуйста, посмотрите мой ответ ниже.   -  person Kim Hoang    schedule 28.12.2016


Ответы (2)


Вам необходимо переместить конфигурацию из app.config в вашем ClassLibrary проекте в app.config основного проекта (например, приложения WPF). Вероятно, это проект, который ссылается на ваш ClassLibrary.

При выполнении вашей программы будет использоваться только app.config в основном проекте.

Обновлено:

В этом случае, я думаю, вам нужно создать клиентский класс программно, не зависимо от app.config, примерно так:

var binding = new BasicHttpBinding();
var endPointAddress = new EndpointAddress("http://localhost:2200/RMSCalculationService.svc");
var client = new YourGeneratedClientClass(binding, endPointAddress);
person Kim Hoang    schedule 28.12.2016
comment
У меня Excel.exe в качестве внешней стартовой программы. Я обновил этот пункт в своем вопросе. - person Ritha; 28.12.2016
comment
@Ritha, значит, вы имеете в виду, что Excel.exe будет использовать вашу DLL? - person Kim Hoang; 28.12.2016
comment
Я знаю, что прошло около трех лет, но большое спасибо за этот фрагмент кода под вашим обновлением. Мне это действительно помогло. У меня есть проект библиотеки классов C #, где все правильно помещено в app.config. Другие (C ++) проекты в моем решении используют эту библиотеку классов, но не имеют app.config. Сообщение об ошибке свело меня с ума, тем более, что все, похоже, правильно настроено ... - person keun; 03.02.2020
comment
Я просто хотел еще раз подтвердить, что добавление новой привязки и конечной точки также решило проблему для меня. Реализация клиента была предоставлена ​​третьей стороной - и хотя конечная точка была отражена в реализации, она не работала. В тот момент, когда я вызвал с его помощью конструктор, он работал как шарм! - person Neophyte; 27.08.2020

Наконец решил это, скопировав файл app.config, переименовав его в Excel.exe.config в эту папку C: \ Program Files \ Microsoft Office \ Office14 \. Поскольку оттуда приложение запускается, оно ищет файл конфигурации в этом месте.

person Ritha    schedule 28.12.2016