如何修复错误:无法解析从服务器收到的消息

我们有一个使用AJAX的Sharepoint解决方案。 触发此按钮的按钮位于更新面板中。

我们所做的一件事就是生成一个MS Word文档,然后在客户端上打开它以便打印它。

将文档发送到客户端的代码如下所示:

void OpenFileInWord(byte[] data) { Response.Clear(); Response.AddHeader("Content-Type", "application/msword"); Response.BinaryWrite(data); Response.Flush(); Response.End(); } 

我们得到的错误是:

Message: Sys.WebForms.PageRequestManagerParserErrorException: The message received from the server could not be parsed. Common causes for this error are when the response is modified by calls to Response.Write(), response filters, HttpModules, or server trace is enabled. Details: Error parsing near '<?mso-application pr'.

我们可以先在Sharepoint中保存文档,然后从Sharepoint打开它,但我们不希望这样做。

导致此代码执行的操作必须是回发事件,而不是AJAX调用。

这是由于处理AJAX请求的方式的性质。

如果你有updatepanel里面的按钮,这可能导致这个,如果不想移动它,只需在updatepanel上添加一个触发器,一个回发触发器。

将您的按钮保持在更新面板之外。 然后它工作正常。

在按钮上单击,重定向到另一个页面,该页面可以流式传输您可能想要执行此类操作的任何文件。 我们在许多站点中使用document.aspx页面,然后通过查询字符串传递文档ID并从那里传输文件。

在您的示例中,您基本上是尝试更改已经显示的页面的标题,这是不允许的

对我来说,问题是网格视图的模板列中的重复控件ID。 一旦我将控件重命名为独特的网格范围,问题就消失了!

尝试在页面加载中添加脚本管理器,如下所示:

 ((ScriptManager)Master.FindControl("ScriptManager1")).RegisterPostBackControl(btnExport); 

我在asp:UpdatePanel控件中有一个asp:Table控件。 该表有一些静态行,在Postback事件期间添加了一些行。

发生此错误是因为表的行和列没有静态ID。 因此,每次回发都会更改ID,这会导致恢复表的ViewState出现问题。

要停止此错误,我禁用了表的ViewState:EnableViewState =“false”

我删除了按钮周围的更新面板,它工作正常。

将按钮设置为导致完全回发,如下所示: