Я использую службы WCF RIA VS2008/.NET 3.5 и пытаясь обрабатывать исключения. Я переопределил метод OnError DomainService и выполнил обработку исключений в этом методе. Я пытаюсь бросить исключение бизнес-правил или исключение базы данных для клиента в той или иной форме, чтобы клиент узнавал их и обрабатывал их по-разному. Проблема заключается в том, что клиент всегда получает DomainServiceException и исходное сообщение об ошибке с первой строкой, в результате которой имя операции не сработало. Таким образом, я не могу определить тип исключения на стороне клиента. Я попытался добавить специальную строку определенного вида исключений в OnError нижеWCF RIA Services Бизнес-правило/Обработка исключений баз данных
/// <summary>
/// Exception handling and logging on error
/// </summary>
/// <param name="errorInfo"></param>
protected override void OnError(DomainServiceErrorInfo errorInfo)
{
Exception exceptionToLog = null;
//if exception is business rule exception then log only if there's an inner exception
if (errorInfo.Error.GetType() == typeof(BusinessRuleException))
{
if (errorInfo.Error.InnerException != null)
{
exceptionToLog = errorInfo.Error;
}
//send the business rule exception to client
base.OnError(new DomainServiceErrorInfo(new DomainException("BRE:" + errorInfo.Error.Message)));
}
else
{
exceptionToLog = errorInfo.Error;
//if its some other server error then send only generic message.
base.OnError(new DomainServiceErrorInfo(new DomainException(ValidationErrorResources.MSG_GenericServerError)));
}
if (exceptionToLog != null)
{
//log exception
EntLibHelper.LogError(exceptionToLog);
}
}
Но, кажется, не будет работать этот трюк. Есть ли способ добавить некоторую дополнительную информацию, к исключению, которое я бросаю с сервера клиенту. Пожалуйста, предложите.
Это разочарование для пользователей, которые не могут перейти на .Net 4.0 в ближайшем будущем. –