Я пишу некоторые службы в WCF для вызова клиентом Silverlight. Я меняю код состояния на 200 каждый раз, когда должна быть возвращена ошибка, через IDispatchMessageInspector.
Работает почти идеально, но иногда возвращает ошибку 500: NotFound.
Я только что написал еще один IDispatchMessageInspector для фиксации изменений в ObjectContext. Но когда это не удается, обработчик ошибок не вызывается.
Я думаю, что к моменту запуска UnitOfWorkMessageInspector сообщение уже было настроено как ответ без ошибок. Как я могу сделать обе вещи работать?
public class UnitOfWorkMessageInspector : IDispatchMessageInspector
{
public void BeforeSendReply(ref Message reply, object correlationState)
{
if (!reply.IsFault)
{
try
{
UnitOfWorkBase.Commit();
}
catch (OptimisticConcurrencyException)
{
throw new FaultException("It was changed by another user. Try again.");
}
}
}