我正在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.");
}
}
}
想知道这是否是一种很好的做法,我替换回复的方式... – 2011-03-02 19:51:16