Silverlightクライアントから呼び出されるサービスをWCFで作成しています。IDispatchMessageInspectorを介して、障害が返されるたびにステータスコードを200に変更します。
ほぼ完璧に動作しますが、エラー500:NotFoundを返し続けることがあります。
ObjectContextの変更をコミットするために、別のIDispatchMessageInspectorを作成しました。ただし、これが失敗した場合、エラーハンドラは呼び出されません。
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.");
}
}
}