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

问题描述:

我在ajax更新面板中使用了一个asp.net文本框。如果我进入&#在文本框中,按下保存按钮,它提供了一个JavaScript错误“Sys.WebForms.PageRequestManagerServerErrorException:状态码:500”

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

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

enter image description here

+0

[Sys.WebForms.PageRequestManagerServerErrorException的可能的复制:处理服务器上的请求时发生未知错误。“](http://*.com/questions/7881470/sys-webforms-pagerequestmanagerservererrorexception-an-unknown-error-occurred-w) – 2017-05-16 11:12:36

当您在多个更新面板中将控件注册为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

+0

有没有什么办法使用相同的用户控件为不同的更新面板做这项工作? – Jeff 2013-06-18 14:01:39

+4

您刚刚复制了此答案:http://*.com/a/7881543/1017882如果您已将此问题视为重复,请相应标记它。 -1。 – 2014-02-14 10:45:32

ASP.NET Request Validation大概踢和检测到潜在危险的请求(#&在文本框的值)。这导致HttpRequestValidationException被抛出 - 因此UpdatePanel返回500个HTTP代码。我看到它的方式有两种方法来解决这个问题:

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

    <%@ Page ValidateRequest="false" %>

如果您选择禁用请求验证确保该文本框的值不逐字输出别的地方在你的应用程序。确保您在显示时使用HttpUtility.HtmlEncode以避免XSS问题。