更新面板回发错误:Sys.WebForms.PageRequestManagerParserErrorException

4

已经查看了这篇文章:Sys.WebForms.PageRequestManagerParserErrorException - 是什么以及如何避免它

问题是这只发生在我的开发环境。另外两个开发人员没有问题。

这是一致和可重复的 - 我尝试删除临时互联网文件,删除我的obj和bin文件并重新启动。

当我在调试器中查看它命中错误时,响应明显被截断。

我还需要检查哪些地方以清除/清理?

我在代码中看到的错误是:

Microsoft JScript 运行时错误:Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器接收到的消息。导致此错误的常见原因是通过 Response.Write()、响应过滤器、HttpModules 或启用了服务器跟踪来修改响应。详细信息:错误解析附近的' </tr> '。

_endPostBack: function PageRequestManager$_endPostBack(error, executor, data) {
    if (this._request === executor.get_webRequest()) {
        this._processingRequest = false;
        this._additionalInput = null;
        this._request = null;
    }

    var eventArgs = new Sys.WebForms.EndRequestEventArgs(error, data ? data.dataItems : {}, executor);
    Sys.Observer.raiseEvent(this, "endRequest", eventArgs);
    if (error && !eventArgs.get_errorHandled()) {
        throw error; // THIS IS WHERE THE ERROR IS THROWN
    }
},

这是在Ajax回发期间。

  1. 没有Response.Write调用。

  2. 我正在使用Cassini/VS 2010开发服务器,如何确定是否有过滤器?

  3. 同上。

  4. 未启用服务器跟踪。

  5. 没有调用Server.Transfer。

在Firebug中,我可以看到POST的响应被截断了。问题在Firefox或IE中发生,无论我是否在VS中进行调试。

如果我切换到Visual Studio中的IIS Express,问题会消失,然后当我回到ASP.NET开发服务器时它会重新出现。


可能是重复的问题??https://dev59.com/E3VC5IYBdhLWcg3wcwwm - Ravi Gadag
@Ravi 不,这是可以重现和一致的,并且那些建议都没有帮助。 - Cade Roux
你是否清理过 ASP.NET 创建的临时文件?这些文件位于 windows\microsoft.net\framework\version\temporary asp.net 目录下(要清除这些文件,必须关闭 IIS)。 - Aristos
@Aristos 谢谢,但是那并没有帮助 - 在同一位置出现了相同的错误(在一个UpdatePanel中的某些单选按钮的PostBack中,出现了完全相同的混乱响应)。 - Cade Roux
2
你能定位问题并分享一个能重现此问题的示例应用程序吗?OffTop - UpdatePanels - 恶性使用,使用真正的 AJAX。 - sll
显示剩余10条评论
4个回答

3

我之前曾遇到过 Cassini 的这个问题。我通过在 Web.config 中添加以下内容来解决它:

<system.web>
  <httpModules>
    <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/>
  </httpModules>
</system.web>

上面的条目适用于1.0版本。请确保版本PublickKeyToken属性与您使用的ASP.net Ajax版本相匹配。此外,您可能需要在页面中禁用事件验证:

enableEventValidation="false"

希望能帮到您!

2
你正在使用某种HTTP模块压缩吗?当使用updatepanels时,它似乎会引起类似于您的问题。请参阅this post
如果你没有使用压缩,也许是其他与HTTP模块相关的错误使你遭受痛苦。尝试将以下内容添加到你的网页中:another httpmodule related
enableEventValidation="false"

也许你可以用这种代码捕获异常:
 protected void ScriptManager1_AsyncPostBackError(object sender, AsyncPostBackErrorEventArgs e)
    {
        ScriptManager1.AsyncPostBackErrorMessage = e.Exception.Message+e.Exception.StackTrace ;
    }

<asp:ScriptManager ID="ScriptManager1" runat="server" 
            OnAsyncPostBackError="ScriptManager1_AsyncPostBackError">
</asp:ScriptManager> 

有关最后一件事,请参考来源


2
在我们的交谈后,我的想法是卡西尼可能无法承载大的后置字段,其中一个大字段就是ViewState。
所以,如果ViewState非常大,那么这可能是问题所在。
第二种情况可能是如果ViewState包含某些字符,有时路由器或防火墙无法通过它们并将它们剪切为可能的附加或病毒。
可能的解决方案:压缩ViewState,和/或将其分成较小的部分。
您还可以下载Cassini的最新开发人员版本,其中包括许多改进,网址为http://cassinidev.codeplex.com/,也许已经解决了这个问题。

这个特定页面的视图状态大小为8300字节,但它已经停止出现错误了,所以我不确定它到底对什么敏感。过去,在一些Windows更新之后,它就消失了,所以我认为它也是某种框架敏感性问题。我期待着尽快在这个遗留应用程序中摆脱视图状态。 - Cade Roux
@CadeRoux 8k 是一个很大的数字。我已经将我的视图状态分成了小于1k的部分。我想告诉你,还有可能不是这个错误,而是与数据绑定同步的错误。 - Aristos

-1

错误:

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

解决方案:

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

在应用设置部分添加上述密钥。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接