Получение отладочного вывода из шаблона REST WCF 4 - PullRequest
1 голос
/ 21 октября 2010

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

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

Поскольку я делаю это способом" REST ", у меня нет этих опций в моем файле web.config.Итак, как я могу включить «IncludeExceptionDetailInFaults» при использовании шаблона REST WCF 4?

1 Ответ

0 голосов
/ 04 февраля 2011

Вот что я придумал:

В стандартной точке доступа в вашем web.config включите faultExceptionEnabled

<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" faultExceptionEnabled="true">

Затем для отображения настраиваемых сообщений должны быть выброшены исключения.FaultException.Вот пример того, который я использую:

if (!Enum.GetNames(typeof(Models.Games.GsfCurrencyPrice.Sections)).Contains(section)) throw new FaultException<ArgumentException>(new ArgumentException("Value must be one of the following: " + string.Join(", ", Enum.GetNames(typeof(Models.Games.GsfCurrencyPrice.Sections))), "section"));

, который выдает следующий ответ при броске:

<Fault xmlns="http://schemas.microsoft.com/ws/2005/05/envelope/none"><Code><Value>Sender</Value></Code><Reason><Text xml:lang="en-US">The creator of this fault did not specify a Reason.</Text></Reason><Detail><ArgumentException xmlns="http://schemas.datacontract.org/2004/07/System" xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns:x="http://www.w3.org/2001/XMLSchema"><ClassName i:type="x:string" xmlns="">System.ArgumentException</ClassName><Message i:type="x:string" xmlns="">Value must be one of the following: Buy, Sell</Message><Data i:nil="true" xmlns=""/><InnerException i:nil="true" xmlns=""/><HelpURL i:nil="true" xmlns=""/><StackTraceString i:nil="true" xmlns=""/><RemoteStackTraceString i:nil="true" xmlns=""/><RemoteStackIndex i:type="x:int" xmlns="">0</RemoteStackIndex><ExceptionMethod i:nil="true" xmlns=""/><HResult i:type="x:int" xmlns="">-2147024809</HResult><Source i:nil="true" xmlns=""/><WatsonBuckets i:nil="true" xmlns=""/><ParamName i:type="x:string" xmlns="">section</ParamName></ArgumentException></Detail></Fault>

Надеюсь, это поможет.

...