У меня много проблем с разрешением отправки определенных ошибок через службу 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>