我正在尝试使用我的web.config文件在Web API项目中实现自定义错误处理。我的问题是重定向没有发生。我在我的网络配置中设置了以下内容:
<customErrors mode="On" defaultRedirect="~/Page/Error?errorId=59">
<error statusCode="403" redirect="~/Page/Error?errorId=59"/>
</customErrors>
&#13;
这可能是棘手的: 我使用的是我放置在控制器中的自定义属性,如果请求不是来自列出的引荐来源,则该属性会返回403状态代码。
这里是属性代码:
public class Action1DebugActionWebApiFilter : ActionFilterAttribute
{
public override void OnActionExecuting(HttpActionContext actionContext)
{
// pre-processing
HttpRequestMessage request = actionContext.Request;
string ipAddress = ((HttpContextWrapper)request.Properties["MS_HttpContext"]).Request.UserHostAddress;
if (!IsIpAddressAllowed(ipAddress.Trim()))
{
actionContext.Response = actionContext.Request.CreateResponse(HttpStatusCode.Forbidden);
}
}
然后我将属性添加到我的控制器中,如下所示:
[Action1DebugActionWebApiFilter]
[HttpGet]
[Route("MyRedirect")]
public IHttpActionResult MyRedirect([FromUri]UserModel myUser)
我知道403正在制作,因为我可以在我的Firefox网络标签中看到它。但重定向并未发生(在Fiddler中验证)。我只是在控制器重定向上得到一个空白屏幕,所有Get参数就在那里。
有什么想法吗?
答案 0 :(得分:1)
这是因为<customErrors>
部分不适用于asp web api。