これが私のサービスコードです。すべてのベスト プラクティスの記事が示唆するように、WebFaultException の形式でエラーをスローします。
[ServiceContract(Namespace = "")]
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
public class API
{
[OperationContract]
[WebGet()]
public int MyMethod()
{
throw new WebFaultException<string>("TESTERROR", HttpStatusCode.BadRequest);
}
}
リクエストを送信すると、次のhttp://localhost:1389/API.svc/MyMethod
JSON オブジェクトが取得されます。
{"ExceptionDetail":null,"ExceptionType":null,"Message":"サーバーは内部エラーのため、要求を処理できませんでした。エラーの詳細については、IncludeExceptionDetailInFaults をオンにしてください (ServiceBehaviorAttribute または例外情報をクライアントに送り返すか、Microsoft .NET Framework 3.0 SDK のドキュメントに従ってトレースをオンにして、サーバーのトレース ログを調べます。","StackTrace":null}
web.config で有効にしようとしincludeExceptionDetailInFaults
ましたが、メッセージは少し変わりましたが、それでも「TESTERROR」はどこにも表示されません!