Изменить исключение - PullRequest
       1

Изменить исключение

0 голосов
/ 30 ноября 2010

У меня есть 2 службы WCF и клиент, который вызывает метод 1-й службы WCF, и этот метод, следовательно, вызывает метод 2-й службы WCF.Метод 2-й службы WCF вызывает общее исключение ошибки, мне нужно, чтобы это исключение обычно «доставлялось» моему клиенту через 1-ю службу.1-я служба WCF обычно получает это обобщенное исключение с некоторыми Action "http://SomeNamespace" в теле сообщения об исключении. Когда 1-я служба повторно выдает это исключение клиенту, клиент получает простое FaultException вместо FaultException 1 . I think the problem is in Действие`, которая содержит пространство имен, которое не приемлемо для клиента, и поэтому клиент не может получить универсальное исключение. В 1-й службе WCF есть экранирование исключений WCF. Ниже приведены код конфигурации и код обработчика. Пожалуйста, помогите мнеи посоветуйте лучший способ изменить действие исключения, чтобы клиент смог получить его нормально.

Вот конфиг:

<exceptionHandling>
      <exceptionPolicies>
        <add name="WCF Exception Shielding">
          <exceptionTypes>
            <add type="System.ServiceModel.FaultException`1[[Sample.SomeFaultContract, Sample, PublicKeyToken=769e6b46280078d4]], System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
                postHandlingAction="ThrowNewException" name="SomeFaultContract">
                <exceptionHandlers>
                  <add faultContractType="Sample.SomeFaultContract, Sample, PublicKeyToken=769e6b46280078d4"
                    type="Helper.ServiceFaultContractHandler, Logger, PublicKeyToken=769e6b46280078d4"
                    name="Fault Contract Exception Handler" />
                </exceptionHandlers>
            </add>
          </exceptionTypes>
        </add>
  </exceptionHandling>

ИЧасть обработчика:

public class ServiceFaultContractHandler : IExceptionHandler
{
   public ServiceFaultContractHandler(NameValueCollection ignore) { }

   public Exception HandleException(Exception exception, Guid correlationID)
   {


   }        
}

Заранее спасибо.

Арам

1 Ответ

0 голосов
/ 30 ноября 2010

Чтобы получить подробности об исключении, вы должны установить для свойства includeExceptionDetailInFaults значение true в поведении службы.
Ниже приведен образец:

<behaviors>
    <serviceBehaviors>
      <behavior name="WCFServicesName">
        <serviceDebug includeExceptionDetailInFaults="true" />
      </behavior>
   </serviceBehaviors>
</behaviors>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...