首页 文章

CustomError IIS6 和 JQuery Ajax 异常处理

提问于
浏览
0

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

我使用 jQuery 创建一个 ajax 请求,并从服务器返回自定义错误异常;这基本上是一个状态码 500 错误。

这是在我的登录页面上动态选取的,我正在为“用户不存在”或“密码不匹配”等内容创建。用户未被重定向到新页面,状态仅作为状态更新更新。这目前有效。

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

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

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

现在,如果用户没有足够的角色,但是通过使用 jQuery 处理 500 个错误请求回到原始状态,我得到空消息并抛出一个 javascript 错误,它不知道如何解析错误响应。

这是在 stackoverflow 上提出的类似问题,但它从未帮助过:

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

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

所以总结一下..使用 customerrors mode = off,jQuery 异常有效,但自定义 403 重定向不起作用。使用 customerrors mode = on。 jQuery 异常不起作用,但 403 重定向确实有效。

有没有办法解决这个问题,任何人都可以想出来?我认为登录处理 403 的一种方式,并希望从登录匹配的角色将匹配传入页面中的角色。但我之所以如此,是因为登录系统所在的系统与其重定向的页面不同。

1 回答

  • 0

    好吧,我选择摆脱客户错误,只是从服务器抛出自定义 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>
    

相关问题