UpdatePanel回发错误:Sys.WebForms.PageRequestManagerParserErrorException

时间:2012-01-31 19:23:56

标签: c# asp.net .net ajax visual-studio-2010

已经看过这个: Sys.WebForms.PageRequestManagerParserErrorException - what it is and how to avoid it

问题是它只发生在我的开发盒上。另外两个开发人员也没问题。

它一致且可重复 - 我尝试删除临时互联网文件,删除我的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

  6. 在firebug中,我可以看到对POST的响应被截断。在Firefox或IE中出现问题,以及我是否在VS中进行调试。

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

4 个答案:

答案 0 :(得分: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"

希望它有所帮助!

答案 1 :(得分:2)

您使用某种http模块压缩吗?在使用updatepanels时,它似乎与您的问题非常相似。请查看this post

如果你没有使用压缩,可能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> 

Source最后一件事。

答案 2 :(得分:2)

在我们的谈话之后,我的想法是,也许由于某种原因,卡西尼不能拥有一个大的后场,而一个大的是观点状态。

因此,如果视图状态非常大,那么这就是问题所在。

第二种情况可能是,如果视图状态包含某些时间未通过路由器或某些防火墙的字符并将其作为可能的附件或病毒切断。

可能的解决方案:压缩视图状态,和/或将其剪切成较小的部分。

您还可以下载最新的Cassini开发人员版本,并在http://cassinidev.codeplex.com/处进行了大量改进,可能已解决此问题。

答案 3 :(得分:-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"/ >

在应用设置部分添加以上键。