私はC#を使用してサービスオペレーションを構築しています。何かがうまくいかないときは、私はクライアント側を捕まえることができる例外をスローしたい。サービスオペレーションの詳細な例外
例外がスローされると、クライアントは "400:bad request"のような一般的なエラーしか受け取れず、例外メッセージにアクセスできなくなります。
私のサービス操作で、私はこれで冗長エラーが有効になっている:私もに、TargetInvocationExceptionを解凍し、代わりにこの関数でます。DataServiceExceptionを返す
[ServiceBehavior(IncludeExceptionDetailInFaults = true)]
and
config.useVerboseErrors = true;
を:
protected override void HandleException(HandleExceptionArgs args)
{
// Handle exceptions raised in service operations.
if (args.Exception.GetType() == typeof(TargetInvocationException)
&& args.Exception.InnerException != null)
{
if (args.Exception.InnerException.GetType() == typeof(DataServiceException))
{
// Unpack the DataServiceException.
args.UseVerboseErrors = true;
args.Exception = args.Exception.InnerException as DataServiceException;
}
else
{
// Return a new DataServiceException as "400: bad request."
args.UseVerboseErrors = true;
args.Exception = new DataServiceException(400, args.Exception.InnerException.Message);
}
}
}
私はブラウザを使用私は冗長な例外メッセージを見ることができますが、プログラムで試してみると、内部例外はnullで、一般的なエラーメッセージ "400:bad request"しか表示されません。
奇妙なことに、私が400の代わりに200のコードを返すと、回答の本文に例外メッセージが表示されます。しかし、明らかに私はこれをしたくありません。
サービス操作から例外をスローすると、例外メッセージのクライアント側を取得する方法はありますか?