“Sys.WebForms.PageRequestManagerServerErrorException:状态代码:500”

时间:2011-03-03 08:21:41

标签: javascript asp.net webforms asp.net-ajax updatepanel

我在ajax更新面板中使用了一个asp.net文本框。如果我在文本框中输入&#并按“保存”按钮,则会出现javascript错误

  

Sys.WebForms.PageRequestManagerServerErrorException:在服务器上处理请求时发生未知错误。从服务器返回的状态代码是:500

请帮我解释为什么会出现此错误?

enter image description here

2 个答案:

答案 0 :(得分:7)

可能ASP.NET Request Validation已启动并检测到潜在危险请求(文本框值中的&#)。这会导致抛出HttpRequestValidationException - 因此UpdatePanel返回500个HTTP代码。我看到它的方式有两种方法可以解决这个问题:

  1. 验证文本框的内容并替换任何有潜在危险(类似HTML)的值。
  2. 禁用请求验证:

    <%@ Page ValidateRequest="false" %>

  3. 如果您选择禁用请求验证,请确保此文本框的值不会逐字输出到应用程序中的其他位置。确保在显示时使用HttpUtility.HtmlEncode以避免XSS问题。

答案 1 :(得分:-1)

当您在多个更新面板中将控件注册为AsyncPostbackTrigger时,有时会发生此问题。

如果这不是问题,请尝试在脚本管理器声明后添加以下内容:

<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args){
        if (args.get_error() != undefined){
            args.set_errorHandled(true);
        }
    }
</script>

此处讨论了更多解决方案:http://forums.asp.net/t/1066976.aspx/9/10