のOData(少なくともV3以降)エラーを表すためにspecific jsonを使用:
{
"error": {
"code": "A custom error code",
"message": {
"lang": "en-us",
"value": "A custom long message for the user."
},
"innererror": {
"trace": [...],
"context": {...}
}
}
}
のMicrosoft .NETは、サーバ側でのODataエラーを形成するMicrosoft.Data.OData.ODataErrorとMicrosoft.Data.OData.ODataInnerErrorクラスが含ま。 )
1形とSystem.Web.OData.Extensions.HttpRequestMessageExtensions.CreateErrorResponse方法
return Request.CreateErrorResponse(HttpStatusCode.Conflict, new ODataError { ErrorCode="...", Message="...", MessageLanguage="..." }));
2を使用して、コントローラのアクションでHttpResponseMessageを返す)を使用してHttpResponseExceptionを投げる:
することができますエラーの詳細が含まれている適切なODataのエラー応答(HttpResponseMessage)を形成するために、 HttpResponseMessageを作成するための同じメソッド
throw new HttpResponseException(
Request.CreateErrorResponse(HttpStatusCode.NotFound, new ODataError { ErrorCode="...", Message="...", MessageLanguage="..." }));
3)カスタム型付き例外をスローするそして
public class CustomExceptionFilterAttribute : ExceptionFilterAttribute
{
public override void OnException(HttpActionExecutedContext context)
{
if (context.Exception is CustomException)
{
var e = (CustomException)context.Exception;
var response = context.Request.CreateErrorResponse(e.StatusCode, new ODataError
{
ErrorCode = e.StatusCodeString,
Message = e.Message,
MessageLanguage = e.MessageLanguage
});
context.Response = response;
}
else
base.OnException(context);
}
}
キーを上げる必要があります見つからないWeb APIをアクションフィルタを使用して、それを変換する404 – qujck