У меня есть 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)
{
}
}
Заранее спасибо.
Арам