Не удалось найти элемент конечной точки по умолчанию ... в клиенте WCF - PullRequest
0 голосов
/ 04 июня 2010

Я создал прокси-класс библиотеки в Service Solution, ссылающийся также на сборку контракта, и скопировал библиотеки (Contract, Proxy) в другую папку решения. Затем сослались на библиотеки Proxy, Contract и System.ServiceModel в другой библиотеке классов, где мне нужно использовать один содержащийся метод, а также добавить App.Config внутри библиотеки.

Сервис размещается в приложении Windows Forms. Клиент - это библиотека классов, вызываемая из приложения форм Windows. Я не создал App.Config внутри проекта форм Windows. Фактически проект Windows Form загружает элемент управления в библиотеку, а элемент управления загружает библиотеку, где мне нужно использовать метод обслуживания. Поэтому я подумал, что должен ссылаться только на (Контракт и прокси) в последней сборке, так как я не буду использовать его где-либо еще.

Но я продолжаю получать эту ошибку:

Не удалось найти конечную точку по умолчанию элемент, который ссылается на контракт «Sign.Contracts.ISignDocument» в Конфигурация клиента ServiceModel раздел. Это может быть потому, что нет файл конфигурации был найден для вашего приложение, или потому что нет конечной точки элемент, соответствующий этому контракту, может быть найденным в клиентском элементе.

App.Config в libray, вызывающий прокси:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <client>
        <endpoint
          address="http://localhost:8731/SignHere"
          binding="basicHttpBinding"
          contract="Sign.Contracts.ISignDocument" />
      </client>
    </services>
  </system.serviceModel>
</configuration>

App.Config в службе Хост:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <system.serviceModel>
    <services>
      <service name="Sign.Service.SignDocumentService">
        <endpoint 
          address="http://localhost:8731/SignHere" 
          binding="basicHttpBinding" 
          contract="Sign.Contracts.ISignDocument" />
      </service>
    </services>
  </system.serviceModel>
</configuration>

Класс прокси:

namespace Sign.Proxies
{
    public class Proxy : ClientBase<ISignDocument>, ISignDocument
    {
        public string SignDocument(string document)
        {
            return Channel.SignDocument(document);
        }
    }
}

Класс договора:

namespace Sign.Contracts
{
    [ServiceContract]
    public interface ISignDocument
    {
        [OperationContract]
        string SignDocument(string document);
    }
}

Есть идеи?

Ответы [ 2 ]

1 голос
/ 04 июня 2010

doooh ... в файле app.config отсутствует родительский элемент для информации о конечной точке клиента.

1 голос
/ 04 июня 2010

Любая программа имеет только один файл конфигурации. В вашем случае это app.config программы Winforms, которая копируется в programName.exe.config при сборке программы.

Любая конфигурация WCF должна быть в этом файле. Тот факт, что в вашей библиотеке есть app.config, не имеет значения. Вам необходимо скопировать соответствующие записи конфигурации из библиотеки app.config и объединить их с app.config приложения Winforms.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...