Использование службы WCF - c #, VS2008 с 3.5 SP1 - PullRequest
1 голос
/ 13 мая 2009

Я пытаюсь использовать сервис WCF. Мне дали URL-адрес файла svc. 1. Создано приложение Windows формы 2. Добавлена ​​сервисная ссылка на файл svc 3. В моем коде во время события загрузки формы я вызываю метод, предоставляемый сервисом

        ServiceReference1.SearchServiceClient search = new WindowsFormsApplication1.ServiceReference1.SearchServiceClient();
        var serviceResult = search.SearchByClientNumber("1");

Я получаю эту ошибку Серверу не удалось обработать запрос из-за внутренней ошибки. Для получения дополнительных сведений об ошибке либо включите IncludeExceptionDetailInFaults (либо из ServiceBehaviorAttribute, либо из поведения конфигурации) на сервере, чтобы отправить информацию об исключении обратно клиенту, либо включите трассировку согласно документации Microsoft .NET Framework 3.0 SDK и проверьте журналы трассировки сервера. "

Я могу вызвать метод с помощью WCFTestClient, но не в моем приложении.

Есть ли какие-то изменения, которые мне нужно выполнить в файле конфигурации моего тестового приложения? Есть раздел для

<client>
        <endpoint address="http://somewhere.com/Service.svc"
            binding="basicHttpBinding" bindingConfiguration="BasicHttpBinding_ISearchService"
            contract="ServiceReference1.ISearchService" name="BasicHttpBinding_ISearchService" />
    </client>

Ответы [ 2 ]

6 голосов
/ 13 мая 2009

Эта ошибка возникает, когда из-за службы выдается исключение, и сообщение не может быть возвращено.

Если у вас есть доступ к сервисному коду, просто сделайте как состояния исключения (« ... включите IncludeExceptionDetailInFaults (либо из ServiceBehaviorAttribute, либо из поведения конфигурации) ... ») отладки.

Пример <serviceBehaviors> тег:

<serviceBehaviors>
    <behavior name="WcfService1.Service1Behavior">
        <serviceDebug includeExceptionDetailInFaults="true"/>
    </behavior>
</serviceBehaviors>

Пример указания поведения службы:

<service name="WcfService1.Service1" behaviorConfiguration="WcfService1.Service1Behavior">

Подробное описание свойства ServiceBehaviorAttribute.IncludeExceptionDetailInFaults можно найти здесь .

2 голосов
/ 13 мая 2009

Если вы можете изменить файл конфигурации на сервере, вот что вы можете сделать, чтобы получить информацию об исключении через службу.

Вам необходимо добавить раздел поведения службы в конфигурацию сервера.

<behaviors>
  <serviceBehaviors>
    <behavior name="serviceNameBehavior">
      <serviceDebug includeExceptionDetailInFaults="True" />
      </behavior>
  </serviceBehaviors>
</behaviors>

Затем свяжите службу с этим поведением.

<service name="serviceName" behaviorConfiguration="serviceNameBehavior" ...
...