WCF не будет - по умолчанию и по проекту - не будет сообщать подробную информацию об ошибках по соображениям безопасности. По сути, он только скажет вам, что «что-то пошло не так на сервере - неудача».
Вы можете - для целей разработки и тестирования - включить более подробную информацию об ошибках, но вы должны отключить ее для производства.
Чтобы включить это, используйте служебное поведение на вашем сервере:
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="DetailedDebugging">
<serviceDebug includeExceptionDetailInFaults="True" />
</behavior>
</serviceBehaviors>
</behaviors>
<services>
<service name="YourService"
behaviorConfiguration="DetailedDebugging" >
....
</service>
</services>
</system.serviceModel>
Теперь ваша служба должна сообщить подробный сбой SOAP, включая все детали, вплоть до вашего клиентского приложения.
Обновление: если я правильно помню, при обработке стандартного (нетипизированного) FaultException
у вас есть легкий доступ к таким вещам, как FaultCode
и FaultReason
и т. Д., Но к сообщению детали немного обременительны - попробуйте что-то вроде этого:
try
{
// your service call here
}
catch(FaultException fe)
{
FaultCode fc = fe.Code;
FaultReason fr = fe.Reason;
MessageFault mf = fe.CreateMessageFault();
if(mf.HasDetail)
{
string detailedMessage = mf.GetDetail<string>();
}
}
Это дает вам доступ к подробному описанию вашей ошибки SOAP ??