Включение «ошибок компиляции» для службы WCF, в отличие от включения сведений об исключении IncludeExceptionDetailInFaults - PullRequest
0 голосов
/ 14 февраля 2020

У меня много проблем с разрешением отправки определенных ошибок через службу WCF. Применение IncludeExceptionDetailInFaults или декорирование с помощью ServiceBehaviourAttribute работает для исключений, возникающих при выполнении программы, но не для «компиляция» ошибок *.

ie. Если я выполню Throw New Exception("My Exception"), он будет отображать ошибку и трассировку стека, как и ожидалось, при выполнении указанной функции. Однако если сериализуемый класс неправильно оформлен, что не позволяет даже зарегистрировать службу, возникает следующая ошибка:

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

* Я говорю, что разница заключается в ошибках компиляции , проект по-прежнему компилируется и запускается, однако служба не загружается - служба вышеуказанная ошибка возникает при регистрации службы, например. Services/MyService.svc/jsdebug возвращает ошибку.

В моем конкретном случае я знаю, что ссылка на конкретный объект вызывает проблему, однако она выглядит правильно оформленной для сериализации - но я не могу точно понять, в чем проблема относится к и, следовательно, отнимает много времени на работу по угадыванию / анализу кода на наличие ошибок.

Я разместил свою настройку ниже, однако, как я уже сказал, это на самом деле работает для исключений времени выполнения - поэтому я вполне уверен, что это проблема не в этом.

Буду признателен за любой совет, как я могу увидеть ошибку!

Сервис

namespace MyProject.Services
{
  [ServiceContract(Namespace = "")]
  [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
  [ServiceBehavior(IncludeExceptionDetailInFaults = true)]
  public class AdminService {
    ...

  }
}

Web.Config

 <system.web>
    <compilation debug="true" targetFramework="4.6.1" />
    ....
 </system.web>
 <system.serviceModel>
    <behaviors>
      <endpointBehaviors>
        <behavior name="MyProject.Services.AdminServiceAspNetAjaxBehavior">
          <enableWebScript />
        </behavior>
      </endpointBehaviors>
      <serviceBehaviors>
        <behavior name="debug">
          <serviceDebug includeExceptionDetailInFaults="true" />
        </behavior>
      </serviceBehaviors>
    </behaviors>
    <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true" />
    <services>
      <service name="MyProject.Services.AdminService" behaviorConfiguration="debug">
        <endpoint address="" behaviorConfiguration="MyProject.Services.AdminServiceAspNetAjaxBehavior" binding="webHttpBinding" contract="MyProject.Services.AdminService" />
      </service>
    </services>
  </system.serviceModel>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...