<?xml version='1.0' encoding="utf-8"?>
      <rss version='2.0'>
      <channel>
      <title>Форум на Исходниках.RU</title>
      <link>https://forum.sources.ru</link>
      <description>Форум на Исходниках.RU</description>
      <generator>Форум на Исходниках.RU</generator>
  	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=351669&amp;view=findpost&amp;p=3105666</guid>
        <pubDate>Wed, 28 Mar 2012 10:32:23 +0000</pubDate>
        <title>WCF, Отчёт об ошибках десериализации парметров вызова</title>
        <link>https://forum.sources.ru/index.php?showtopic=351669&amp;view=findpost&amp;p=3105666</link>
        <description><![CDATA[Alexus: Ой&#33; забыл закрыть запрос. я решил проблему - просто надо было заглянуть в body http-ответа. там лежали всё отчёты об ошибках нужные.]]></description>
        <author>Alexus</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=351669&amp;view=findpost&amp;p=3105298</guid>
        <pubDate>Tue, 27 Mar 2012 19:19:47 +0000</pubDate>
        <title>WCF, Отчёт об ошибках десериализации парметров вызова</title>
        <link>https://forum.sources.ru/index.php?showtopic=351669&amp;view=findpost&amp;p=3105298</link>
        <description><![CDATA[Mustang: Если сервис хоститься на IIS и ASP.Net life cycle ему не чужд - можно попробовать в global.asax.cs - на событие &quot;Application_Error&quot; - подправить Response...<br>
что-то вроде:<br>
<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">protected void Application_Error(object sender, EventArgs e)</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;Exception ex = Server.GetLastError();</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;</div><div class="code_line">&nbsp;&nbsp; &nbsp;HttpContext.Current.Response.&quot;На что с душой договорились&quot;;</div><div class="code_line">}</div></ol></div></div></div></div><script>preloadCodeButtons('1');</script><br>
<br>
а в клиенте соотв. это дело чекать (что и как чекать - дело договоренностей сервера и клиента).]]></description>
        <author>Mustang</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      <item>
        <guid isPermaLink='true'>https://forum.sources.ru/index.php?showtopic=351669&amp;view=findpost&amp;p=3082469</guid>
        <pubDate>Wed, 22 Feb 2012 05:59:51 +0000</pubDate>
        <title>WCF, Отчёт об ошибках десериализации парметров вызова</title>
        <link>https://forum.sources.ru/index.php?showtopic=351669&amp;view=findpost&amp;p=3082469</link>
        <description><![CDATA[Alexus: Есть WCF-служба, работает по SOAP (wsHttpBinding). В ней есть метод, он принимает параметр сложного типа. На этот тип повешан DataContract. Всё работает.<br>
<div class='tag-code'><span class='pre_code'></span><div class='code  code_collapsed ' title='Подсветка синтаксиса доступна зарегистрированным участникам Форума.' style=''><div><div><ol type="1"><div class="code_line">[ServiceContract()]</div><div class="code_line">public interface IPublicService</div><div class="code_line">{</div><div class="code_line">&nbsp;&nbsp; &nbsp;[OperationContract]</div><div class="code_line">&nbsp;&nbsp; &nbsp;Boolean DoSomething(Parameter obj);</div><div class="code_line">}</div></ol></div></div></div></div><br>
<br>
Проблема возникает, когда клиент шлёт службе SOAP-сообщение (по HTTP), в теле которого неверно задан этот параметр. Лишнее поле там в нём или опечатка какая.<br>
В этом случае клиент сразу получает &quot;The remote server returned an error: (500) Internal Server Error.&quot; на свой веб-запрос. При этом в трейсе сервера видно вполне вменяемое исключение:<br>
<br>
<div class='tag-quote'><span class='tag-quote-prefix'>Цитата</span> <div class='quote '><br>
&lt;ExceptionType&gt;System.ServiceModel.Dispatcher.NetDispatcherFaultException, System.ServiceModel, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089&lt;/ExceptionType&gt;<br>
&lt;Message&gt;The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter obj. The InnerException message was &#39;There was an error deserializing the object of type Parameter. Start element &#39;a:Name&#39; does not match end element &#39;obj&#39;. Line 33, position 9.&#39;.  Please see InnerException for more details.&lt;/Message&gt;<br>
<br>
... тут ещё трейс, и все внутренние исключения ...<br>
</div></div><br>
(в SOAP задано лишнее поле Name)<br>
<br>
Я бы хотел, чтобы клиент таки увидел это сообщение и знал как исправиться. А он видит только HTTP 500... <br>
<br>
&quot;IncludeExceptionDetailInFaults = true&quot; не помогает. Как я понимаю, это только для исключений, который возникают в коде службы. <br>
Как жить то?]]></description>
        <author>Alexus</author>
        <category>.NET: Распределенные приложения</category>
      </item>
	
      </channel>
      </rss>
	