У меня вопрос о исключениях WCF. Я реализую интерфейс IErrorHandler и создаю FaultException
.Wcf Обработка ошибок с использованием интерфейса IErrorHandler
Мой вопрос заключается в следующем: когда я создаю FaultException
, есть ли шаблон, который я должен выполнить для отправки дружественного сообщения об ошибке клиенту?
Я регистрирую фактическое исключение с использованием метода HandleError
в базе данных и создавая FaultException
в методе ProvideFault
.
Учитывая, что у меня есть пример реализации интерфейса IErrorHandler.
public bool HandleError(Exception error)
{
System.Diagnostics.Debug.WriteLine(error.Message);
// Log the error to the Db
return true;
}
public void ProvideFault(Exception error, MessageVersion version, ref Message fault)
{
// Here is a sample that I was playing with.
MessageFault faultException;
if(error is DataException)
faultException = new FaultException<string>(ErrorStrings.DatabaseOpenError, new FaultReason(ErrorStrings.DatabaseOpenError)).CreateMessageFault();
else if (error is NullReferenceException)
faultException = new FaultException<string>(ErrorStrings.NullDataError, new FaultReason(ErrorStrings.NullDataError)).CreateMessageFault();
else
faultException = new FaultException<string>(ErrorStrings.GeneralError, new FaultReason(ErrorStrings.GeneralError)).CreateMessageFault();
fault = Message.CreateMessage(version, faultException, "");
}
мне нужна некоторая ясность в отношении того, что именно должно быть сделано внутри ProvideFault
метода для возврата дружественную Fault пользователя. Я также планирую использовать локализацию для отображения ошибок. Не уверен, что это будет сделано клиентом, или если служба должна отправить локализованные сообщения.
На основании того, что я прочитал, я не должен отправлять информацию о стеке из ошибок или ошибок EntityFramework, таких как ошибки EntityValidation и т. Д., Клиенту из-за соображений безопасности.
В этом случае мне нужно будет проверить тип исключения, и мои данные будут более уместными перед отправкой клиенту?