在 IIS 上托管后发送 403 状态代码时出现错误消息
Incorrect message coming when sending 403 status code after hosting on IIS
我在我的 .net MVC 应用程序中为基于角色的授权创建了自定义授权过滤器。当用户在 handleunauthorizedRequest 方法中未被授权时,我发送 403 状态代码和自定义错误消息(请参阅下面的代码)
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
{
filterContext.HttpContext.Response.StatusCode =(int) HttpStatusCode.Forbidden;
filterContext.HttpContext.Response.Write("Not Authorized");
filterContext.Result = new EmptyResult();
//filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden, "Not Authorized");
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
当 运行 本地主机上的应用程序时,我收到正确的错误消息 ("Not Authorized")。但是,在使应用程序在 IIS 服务器中运行后,我得到了 403 状态代码的默认错误页面,因此我从 IIS 中删除了 403 状态的默认错误页面。现在我收到以下错误消息:
You do not have permission to view this directory or page.
谁能告诉我这条消息是从哪里来的?
我在阅读了一些博客和 Microsoft 文档后能够解决这个问题。我在 web.config 文件中添加了以下行以保持响应不变
<httpErrors existingResponse="PassThrough" />
您可以在此处阅读有关 httpErros 的信息:microsoft docs
我在我的 .net MVC 应用程序中为基于角色的授权创建了自定义授权过滤器。当用户在 handleunauthorizedRequest 方法中未被授权时,我发送 403 状态代码和自定义错误消息(请参阅下面的代码)
protected override void HandleUnauthorizedRequest(AuthorizationContext filterContext)
{
if (!this.Roles.Split(',').Any(filterContext.HttpContext.User.IsInRole))
{
filterContext.HttpContext.Response.StatusCode =(int) HttpStatusCode.Forbidden;
filterContext.HttpContext.Response.Write("Not Authorized");
filterContext.Result = new EmptyResult();
//filterContext.Result = new HttpStatusCodeResult(HttpStatusCode.Forbidden, "Not Authorized");
}
else
{
base.HandleUnauthorizedRequest(filterContext);
}
}
当 运行 本地主机上的应用程序时,我收到正确的错误消息 ("Not Authorized")。但是,在使应用程序在 IIS 服务器中运行后,我得到了 403 状态代码的默认错误页面,因此我从 IIS 中删除了 403 状态的默认错误页面。现在我收到以下错误消息:
You do not have permission to view this directory or page.
谁能告诉我这条消息是从哪里来的?
我在阅读了一些博客和 Microsoft 文档后能够解决这个问题。我在 web.config 文件中添加了以下行以保持响应不变
<httpErrors existingResponse="PassThrough" />
您可以在此处阅读有关 httpErros 的信息:microsoft docs