我正在 WCF 中编写一些服务以供 Silverlight 客户端调用。每次要通过 IDispatchMessageInspector 返回故障时,我都会将状态代码更改为 200。
它工作得几乎完美,但有时它会不断返回错误 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.");
}
}
}