Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net 在C#中,如何将用户重定向到拒绝访问错误aspx页面?_Asp.net_Redirect_Error Handling_C# 3.0_Authorization - Fatal编程技术网

Asp.net 在C#中,如何将用户重定向到拒绝访问错误aspx页面?

Asp.net 在C#中,如何将用户重定向到拒绝访问错误aspx页面?,asp.net,redirect,error-handling,c#-3.0,authorization,Asp.net,Redirect,Error Handling,C# 3.0,Authorization,我在C#上有一个web应用程序,我指定了一些安全性,只允许3个用户进入网站: <authentication mode="Windows"/> <authorization> <allow users="DOMAIN\john,DOMAIN\mary,DOMAIN\jesus" /> <deny users="*" /> </authorization> 似乎权限有效,因为他们可以进入,但其他登录的人不能进入(这是

我在C#上有一个web应用程序,我指定了一些安全性,只允许3个用户进入网站:

<authentication mode="Windows"/>
<authorization>
    <allow users="DOMAIN\john,DOMAIN\mary,DOMAIN\jesus" />
    <deny users="*" />
</authorization>

似乎权限有效,因为他们可以进入,但其他登录的人不能进入(这是确定的)

现在的问题是如何在不接触IIS的情况下捕获401.2错误,以拦截访问被拒绝错误并将用户重定向到用户友好的aspx页面

我试图在global.asasx应用程序上添加一些代码,但没有成功


未经授权时,如何将用户重定向到错误子文件夹,如
/errors/AccessDenied.aspx
页?

在web.config中添加自定义错误部分,如

<customErrors mode="On" defaultRedirect="/ErrorPages/AppError.html">
    <error statusCode="401" redirect="/ErrorPages/401-2.html" />
</customErrors>

您可以插入位置标记,告诉应用程序erros文件夹具有授权

  <location path="errors">
    <system.web>
      <authorization>
        <allow users="*"/>
      </authorization>
    </system.web>
  </location>

这个问题可能很老了,但我在MVC中解决同样的问题时发现了它。如果我可以扩展@JuniorMayhe的最终解决方案,我希望这对其他人有所帮助

对于我的项目,我编辑了Global.asax文件以重定向到我为401错误创建的路由,将用户发送到“unauthorized to see this”视图

在Global.asax中(如上所述,但这使用了MVC的路线):

在Route.config中:

        routes.MapRoute(
        "ErrorHandler",
        "Error/{action}/{errMsg}",
        new { controller = "Error", action = "Unauthorised", errMsg = UrlParameter.Optional }
        );
在控制器中:

    public ViewResult Unauthorised()
    {
        //Response.StatusCode = 401; // Do not set this or else you get a redirect loop
        return View();
    }

类似的问题这里有一个原因,你试图做到这一点,而不触及IIS?根据,401.2错误意味着客户端浏览器和IIS无法就身份验证协议达成一致。似乎IIS配置将是修复此问题的逻辑方法。是的,我已经授予访问此错误子文件夹的权限,但这并不能解决问题。我总是看到默认的asp.net错误页面“访问被拒绝”。好的,
customErrors
在401.x中根本不起作用。因此,诀窍是使用此代码添加Global.asax a
受保护的应用程序_EndRequest(object sender,EventArgs e)
if(Response.StatusCode==401…。所以它现在工作得很好@你是怎么解决这个问题的,你用了什么代码?到目前为止,我也有同样的问题。
        routes.MapRoute(
        "ErrorHandler",
        "Error/{action}/{errMsg}",
        new { controller = "Error", action = "Unauthorised", errMsg = UrlParameter.Optional }
        );
    public ViewResult Unauthorised()
    {
        //Response.StatusCode = 401; // Do not set this or else you get a redirect loop
        return View();
    }