Sys.WebForms.PageRequestManagerServerErrorException:在服务器上处理请求时发生未知错误。“

时间:2011-10-24 20:19:09

标签: c# javascript jquery asp.net ajax

我在页面上有几个更新面板和jquery选项卡。而且我还在更新面板上加载几个用户控件。用户等待几分钟后(未检查时间约40分钟)。当用户从提交按钮发送请求时,它给出了以下错误?

'Sys.WebForms.PageRequestManagerServerErrorException:
Sys.WebForms.PageRequestManagerServerErrorException: An unknown 
error occurred while processing the request on the server. The status 
code returned from the server was: 0' when calling method: 
[nsIDOMEventListener::handleEvent]

我无法追踪此问题。但我相信。这是由Ajax引起的。大师,如果你知道解决方案。请告诉我。

27 个答案:

答案 0 :(得分:28)

我遇到了这个问题,我花了好几个小时试图修复它。

解决方案勾选答案不会修复错误只处理它。

最好的方法是检查IIS日志文件,错误应该在那里。似乎更新面板封装了真实的错误并将其输出为“javascript错误”。

例如我的错误是我忘了上课[Serializable]。虽然这在本地运行良好,但在服务器上部署时却无法正常工作。

答案 1 :(得分:28)

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

答案 2 :(得分:8)

当我在UpdatePanel中使用GridView中的按钮时出现此错误...我的代码被删除我发现上述错误是由于另一个内部错误引起的“从客户端检测到一个潜在危险的Request.Form值“

最后我发现我页面上的一个TextBox有XML / HTML内容,这导致上面的错误 当我删除xml / HTML并测试按钮单击...它按预期工作。

答案 3 :(得分:5)

兄弟这段代码不是解决方案,只需将其改为

即可
<script type="text/javascript" language="javascript">
    Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
    function EndRequestHandler(sender, args){
        if (args.get_error() != undefined){
            **alert(args.get_error().message.substr(args.get_error().name.length + 2));**
            args.set_errorHandled(true);
        }
    }
</script>

你会看到错误,但你不是把它扔在UI上。

答案 4 :(得分:5)

不要重新打开旧线程,但此解决方案也很有用 -

validateRequest="false"指令中添加<%@ Page

这是因为ASP.net检查浏览器输入的危险值。有关此link

的更多信息

答案 5 :(得分:3)

我有同样的问题,在这里我提出了我的问题和我的解决方案,希望这会对某人有所帮助:

根据其他人的推荐,我去了服务器的日志(在我的情况下是Windows Server 2012):

控制面板 - &gt;管理工具 - &gt;事件查看器

然后在左侧:

Windows日志 - &gt;应用程序:

enter image description here

在警告中,我发现了来自我网站的消息,在我的情况下,这是由于空引用:

*Exception type: NullReferenceException 
Exception message: Object reference not set to an instance of an object.*

检查日志中描述的函数,我发现了一个非初始化的对象,就是这样。

因此它可能是代码中的空引用异常。 希望有人能找到这个有用的问候语。

答案 6 :(得分:2)

@ JS5,我也遇到了和你一样的问题:ImageButton仅在生产服务器和IE上导致UpdatePanel内部的异常。经过一番研究后我发现了这个:

  

ImageButtons和UpdatePanels存在问题。更新到   .NET 4.5在那里修复。它与微软有关   将按钮的x,y轴从Int更改为Double,这样就可以了   告诉您点击按钮的位置,然后进行转换   错误。

Source

我正在使用NetFramework 2.0和IIS 6,因此,建议的解决方案是降级IE兼容性,添加元标记:

<meta http-equiv="X-UA-Compatible" content="IE=9" />

我是通过Page_Load方法在我需要的页面上完成的:

Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    Dim tag As HtmlMeta = New HtmlMeta()

    tag.HttpEquiv = "X-UA-Compatible"
    tag.Content = "IE=9"

    Header.Controls.Add(tag)
End Sub

希望这有助于某人。

答案 7 :(得分:2)

我也面临同样的问题,但这些都没有奏效。在我的情况下,通过在配置文件中添加这些行来解决这个问题。

<appSettings>
  <add key="aspnet:MaxHttpCollectionKeys" value="100000" />
</appSettings>

<system.web.extensions>
  <scripting>   
    <scriptResourceHandler enableCompression="false" enableCaching="true"/>       
  </scripting>
</system.web.extensions> 

答案 8 :(得分:2)

检查您的Application Event Log - 我的问题是Telerik RadCompression我在Web.config中禁用的HTTP模块。

答案 9 :(得分:1)

&#34; 1-转到应用程序的web.config&#34;

&#34; 2-在&lt;下添加一个新条目system.web&gt; &#34;

3-同时找到pages标签并设置validateRequest = False

只有这对我有用。 !!

答案 10 :(得分:1)

对于使用Visual Studio内部IIS的用户,请尝试以下操作:

  1. 生成错误消息。
  2. 在错误显示处中断调试器。
  3. 检查callstack。你应该看到'加注'。
  4. 双击'加注'。
  5. 检查'sender'参数的内部。您将看到'_xmlHttpRequest'属性。
  6. 打开'_xmlHttpRequest'属性,您将看到'响应'属性。
  7. 'response'属性将包含实际消息。
  8. 我希望这有助于那里的人!

答案 11 :(得分:1)

我们也遇到了同样的问题,问题只能在服务器上重现(即,不是本地的,这使得它更难修复,因为我们无法调试应用程序),以及使用IE时。我们有一个带有更新面板的页面,在此更新面板中有一个modalpopupextender,它还包含一个更新面板。在尝试了几个不起作用的解决方案之后,我们通过使用链接按钮替换modalpopupextender中的每个图像按钮来修复它,并在其中替换所需的图像。

答案 12 :(得分:1)

我有同样的问题,当我尝试解决方法时,我发现更新面板导致了这个问题。根据我的要求,我可以删除更新面板并解决问题。 因此,这是该问题的可能解决方案。

答案 13 :(得分:0)

这个问题对我来说是由数据库映射错误引起的。

我试图在数据源上使用select()调用,但后面的代码中有错误。我的控件位于更新面板中,实际原因已隐藏。

通常,如果您可以暂时删除更新面板,asp.net将返回更有用的错误消息。

答案 14 :(得分:0)

当我将项目升级到4.5框架并且GridView具有空数据模板时,我遇到了这个问题。有些东西发生了变化,之前返回空数据模板的以下语句现在返回了Header Row。

GridViewRow dr = (GridViewRow)this.grdViewRoleMembership.Controls[0].Controls[0];

我将其更改为下面,错误消失,GridView开始按预期工作。

GridViewRow dr = (GridViewRow)this.grdViewRoleMembership.Controls[0].Controls[1];

我希望这有助于某人。

答案 15 :(得分:0)

当CDN是根目录时,请确保使用波浪号和正斜杠(〜/)。我认为这是IIS中的一个问题

答案 16 :(得分:0)

在iFrame中使用AsyncFileUploader时出现此问题。使用Firefox时出错。工作在铬就好了。似乎父页面或iframe页面加载不同步,并且父页面无法在iframe页面上找到控件。添加了一个简单的javascript警报,表示该文件已上传。这使得控件有足够的时间加载,并且由于控件可用,所有加载都没有错误。

答案 17 :(得分:0)

我的解决方法是在更新面板中删除我的asp.net代码中TextBox的Text =“”属性中的任何HTML标记。如果页面上有多个更新面板,则会影响所有更新面板,这样就更难确定哪个面板存在问题。克里斯在上面的回答让我找到了这个,但他的答案是非常隐蔽的,但我认为这是一个非常相关的答案,所以这里的答案是解释的。

<asp:TextBox ID="bookingTBox" runat="server" ToolTip="" Width="150px" Text="<Auto Assigned>" CssClass="textboxItalicFormat"></asp:TextBox>

以上代码会出现此错误。

以下不会。

<asp:TextBox ID="bookingTBox" runat="server" ToolTip="" Width="150px" Text="Auto Assigned" CssClass="textboxItalicFormat"></asp:TextBox>

在第二个文本框代码中,我删除了&lt;和&gt;来自Text =“”属性。请在花时间添加脚本代码等之前尝试这个。

答案 18 :(得分:0)

有些时候,由于某些代码,您在文本字段中获得HTML标记,就像我用HTML的新行BR标记替换某些字符一样,我错误地将其替换为应该在多行显示的文本中由于我的字符串替换功能,我的多行文本框中有一个新的行HTML标签BR,因为我的字符串替换功能,我开始收到此JavaScript错误,因为此HTML代码显示在更新面板中的文本框中得到这个错误,所以我做了更正,一切都很好。因此,在复制粘贴任何内容之前,请查看您的代码并查看所有标记是否正确关闭,并且没有相关的代码数据来到文本框或下拉列表。此错误总是由于格式错误的标签和不相关的数据造成的。

答案 19 :(得分:0)

正如我的朋友@RaviKumar所提到的,以下问题的一个原因是,从代码传输到UI的某些数据包含原始html标签,这使得请求无效,例如我有一个 textarea 并且在我的代码我通过下面的代码设置了它的值

txtAgreement.Text = Data.Agreement

当我编译页面时,我可以看到textarea中的原始html标签,所以我将textarea更改为 div ,其中 innerhtml 工作并呈现html(而不是注入原始html标签到元素),它对我有用

快乐编码

答案 20 :(得分:0)

<add key="aspnet:MaxHttpCollectionKeys" value="100000"/ >

将以上密钥添加到Web.config或App.config以删除此错误。

答案 21 :(得分:0)

当我在更新面板中使用ModalPopupExtender时出现此错误...我的代码被删除我发现上面的错误是由于updatepanel updatemode是有条件的...因此我将其更改为始终然后问题解决了。

答案 22 :(得分:0)

这不是真正的问题,如果你想了解为什么会发生这种情况,那么请转到IIS的错误日志文件。

如果是visual studio,请导航至:

C:\Users\User\Documents\IISExpress\TraceLogFiles\[your project name]\.

按日期降序排列文件,然后打开第一个文件。

它看起来像:

enter image description here

现在向下滚动到底部以查看GENERAL_RESPONSE_ENTITY_BUFFER 这是实际问题。现在解决它,上面的问题会自动解决。

enter image description here

答案 23 :(得分:0)

对我来说问题是我使用的是<button>而不是<asp:LinkButton>

答案 24 :(得分:0)

这在我的代码中运行良好..我解决了我的问题..真的

web.config 文件中添加以下代码。

<system.web>
    <httpRuntime executionTimeout="999" maxRequestLength="2097151"/>
</system.web>

答案 25 :(得分:0)

在updatepanel内使用以下代码。

<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>

答案 26 :(得分:0)

对我来说,答案是修复一个gridview控件,其中包含一个模板字段,该字段有一个下拉列表,其中加载了怪异的数量的可选项 - 我用一个标签字段替换了DDL,其标签字段的数据是从函数生成。 (我原本打算允许gridview编辑,但已切换到允许在单独的面板上进行编辑,该面板仅为该记录显示该字段的DDL)。希望这可能对某人有所帮助。