繁体   English   中英

CustomError IIS6和JQuery Ajax异常处理

[英]CustomError IIS6 and JQuery Ajax exception handling

我有一个问题,其中发生了两个级别的异常处理。

我使用jQuery提出了ajax请求,并从服务器上抛出了自定义错误异常。 这基本上是一个状态码500错误。

这是在我为诸如“用户不存在”或“密码不匹配”之类的登录页面动态创建的。 用户不会被重定向到新页面,状态只是作为状态更新而更新。 目前有效。

但是,如果用户成功登录,他们将被重定向到页面。 新页面将查看用户是否已分配角色来查看页面。 由于来自web.config的customerrors被关闭,用户将被带到死亡的黄页。 表示用户没有权限或访问被拒绝。

处理此问题的逻辑方法是重定向页面以查找403错误并在web.config配置:

<customErrors mode="RemoteOnly">    
    <error statusCode="403"   redirect="~/accessdenied.aspx"/>
</customErrors>

现在,如果用户没有足够的角色,则可以使用此方法,但是通过使用jQuery处理500个错误请求返回到原始内容,我得到了空消息,并抛出了一个JavaScript错误,它不知道如何解析错误响应。

这是一个关于stackoverflow的类似问题,但没有帮助:

ASP.NET中具有customErrors mode =“ On”的jQuery ajax

我的问题与该问题之间的区别在于,登录名处理的是403和500错误。 通过我的登录,可以处理500个错误,并转到处理403个错误的新页面。 将更改添加到web.config会更改整个站点的错误处理。

综上所述,使用customerrors mode = off时,jQuery异常有效,但是自定义403重定向无效。 使用customerrors模式=开启。 jQuery异常无效,但403重定向有效。

有什么方法可以解决这个问题,任何人都可以提出来? 我认为一种方法是使登录名也能处理403,并希望从登录名匹配的角色将与传入页面中的角色匹配。 但是我对此很怀疑,因为登录系统与重定向到的页面位于不同的系统上。

好吧,我选择摆脱customerror,只是从服务器上抛出一个自定义403异常,JavaScript将拦截该异常。 然后,我重定向到一个被拒绝访问的页面。

这是我的C#代码

if (!allowedRoles)
{
     Logout();
     throw new HttpException(403, "User does not have permissions to view this page");
}

然后在我的jQuery中:

function onLoginError(error, textStatus) {
    var jsonErrorData = JSON.parse(error.responseText).Message;
    $('#status').text(jsonErrorData );
}

和我的web.config

<customErrors mode="Off"></customErrors>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM