我觉得我可能会因为像这样的指南而使事情变得复杂: How to override all standard error pages in WebAPI
我无法让它工作,因为我认为我正在使用的ASP.NET Web API版本已弃用context.Request.CreateErrorInfoResponse()
我要做的就是将HTTP 403 Forbidden显示为~/Error.json
我已经尝试过对我的Web.config文件执行此操作:
<system.web>
<customErrors mode="RemoteOnly">
<error statusCode="403" redirect="~/Error.json" />
</customErrors>
</system.web>
我也试过这个:
<system.web>
<customErrors mode="On">
<error statusCode="403" redirect="~/Error.json" />
</customErrors>
</system.web>
抛出此异常时似乎没有任何影响:
throw new APIException(HttpStatusCode.Forbidden, new MessageError("foobar"));
在我的应用程序中,只有一种情况会收到Forbidden响应,并且我不希望我的RESTful API在此事件中返回HTML响应。
我该怎么做才能解决这个问题?
我需要这样做的原因是,如果客户试图破解或盗用此Web应用程序,则Web应用程序无效。我想在Startup.cs中完成所有这些操作,如果它可能会使应用程序崩溃并返回错误的json响应,而不是throw new Exception
方法默认执行的HTML响应。