Java クライアントと c# mvc3 クライアントによって消費される WCF 4 Rest サービスがあります。レスポンス コンテンツは json として返される必要があります。
一貫した方法で例外/障害をクライアントに返すことができるようにしたいと考えています。WebFaultException を使用する必要があることを読みましたが、実際には正常に動作します。
ただし、Web プロジェクト以外で使用される可能性があるため、アプリケーション ロジック プロジェクトを WebFaultExceptions で汚染したくありません。
そこで、WCF Rest サービスに IErrorHandler を実装してすべての例外をキャッチし、特定の例外、つまり ValidationException については、例外を WebFaultException にラップされたエラーとして返すことを検討しました。ただし、これは機能していないようで、フォーム フィドラーを呼び出すと、次の Http 504 応答が返されます。
[Fiddler] ReadResponse() が失敗しました: サーバーはこの要求に対する応答を返しませんでした。
私がやっていることの本質を示すために、コードを必要最小限に減らしました。
public void ProvideFault(Exception error,
MessageVersion version,
ref Message fault)
{
var ex = new WebFaultException<Exception>(
new Exception("you can't do that"),
HttpStatusCode.Unauthorized);
var xmf = ex.CreateMessageFault();
fault = Message.CreateMessage(version,
null,
xmf,
new DataContractJsonSerializer(xmf.GetType()));
}
私は何を間違っていますか?