2

次の例外フィルターがあります。

public class ServiceLayerExceptionFilter : ExceptionFilterAttribute
    {
        public override void OnException(HttpActionExecutedContext context)
        {
            if (context.Result == null)
            {
                context.Result = new HttpResponseMessage();
            }

            context.Result.StatusCode = context.Exception.ConvertToHttpStatus();   
            base.OnException(context);
        }
    }

私のConvertToHttpStatus()は、HttpStatusCodesにマップされる例外タイプのDictionaryオブジェクトを検索する単なる拡張機能です。httpステータスコードは正しく変換されています。ただし、応答ペイロードでIISエラーページが表示されます。できれば、応答を空にするか、例外メッセージをjsonとして渡すことをお勧めします。IISエラーページが返される理由と、空または有効なコンテンツを返す方法を知っている人はいますか?

4

1 に答える 1

3

作成したHTTP応答メッセージにコンテンツを書き込みませんでした。いくつかのコンテンツを追加してみてください:

public class ServiceLayerExceptionFilter : ExceptionFilterAttribute
{
    public override void OnException(HttpActionExecutedContext context)
    {
        var message = new HttpResponseMessage(HttpStatusCode.InternalServerError);
        message.CreateContent(typeof(Foo), new Foo { Bar = "baz" });
        context.Result = message;
    }
}
于 2012-05-18T17:10:19.003 に答える