在按钮的单击事件上写Response.write()时获取错误

时间:2010-03-26 06:14:28

标签: asp.net response.write

  

Sys.Webforms.PageRequestManagerParserErrorException:收到的消息   从服务器无法解析。导致此错误的常见原因是   通过调用Response.Write(),响应来修改响应时   过滤器,HttpModules或服务器跟踪已启用。详细信息:解析时出错   靠近'

您好我在updatepanel中保留了按钮,我收到此错误

3 个答案:

答案 0 :(得分:1)

您不应在事件处理程序中为按钮使用Response.Write。实际上你根本不应该使用Response.Write(),除非你手动处理所有的响应生成(然后你也可以使用ashx而不是aspx)。

一种解决方法是在您希望显示文本的页面上放置文字控件,并在按钮单击事件中设置文字的值。

答案 1 :(得分:0)

updatePanel是ajax的一种自动方式,不能与Response.Write()一起使用,因为需要在内存上呈现要发送的内容,而不是从页面传递。 Respose.Write()直接将输出发送到客户端,就像直接输出到客户端页面,但没有这个页面。因此updatePanel上的Respose.Write()会抛出异常。

将Respose.Write()替换为可能的文字,并在文字内放置您想要显示的输出。

答案 2 :(得分:0)

更通用的原因是某些防火墙/浏览器插件可以剥离与AJAX相关的HTTP标头值X-MicrosoftAJAX,从而破坏了正常的页面渲染周期。

详细解释可在Telerik博客Blog post on Telerik site中找到,但似乎由于公司重组他们失去了博客服务(希望暂时)。所以引用Bing缓存:

http://cc.bingj.com/cache.aspx?q=http%3a%2f%2fblogs.telerik.com%2fhristodeshev%2fposts%2f07-06-24%2ffirewalls_breaking_asp_net_ajax.aspx&d=4534636468308322&mkt=en-GB&setlang=en-US&w=8ZCg4pTc8CwOHTBDOYwjhsvWmFHYT0tM

  

防火墙打破ASP.NET AJAX!这个是严肃的,可能会咬你   任何时候。

     

昨天肖恩在我们的论坛上发布了这个问题:他和他的用户   在请求基于ASP.NET AJAX的站点时遇到奇怪的错误,   是的,这意味着RadControls" Prometheus"基础的。   UpdatePanel控件启动的部分呈现请求失败   带着神秘的信息:

     

============== Sys.WebForms.PageRequestManagerParserErrorExeption:无法解析从服务器收到的消息。常见原因   对于此错误,是通过调用修改响应的时间   Response.Write(),响应过滤器,HttpModules或服务器跟踪是

     启用。详细信息:解析附近的错误'      

当然,所有这些都没有任何Response.Write()的痕迹,   HttpModule,代码中的响应过滤器或服务器端跟踪。该   恐怖,恐怖......

     

拥有成为团队成员的奢侈品   类似于ASP.NET AJAX的框架,我注意到有些东西正在制作中   ASP.NET AJAX呈现整个页面并将其返回给浏览器   即使服务器代码应该处理部分   渲染请求。请注意我的重点(粗体部分是开头的   一般的HTML文档):

     

============== Sys.WebForms.PageRequestManagerParserErrorExeption:无法解析从服务器收到的消息。常见原因   对于此错误,是通过调用修改响应的时间   Response.Write(),响应过滤器,HttpModules或服务器跟踪是   启用。详细信息:在*****'附近解析时出错      

我相信Watchguard的家伙应该得到X-MicrosoftAjax标题   进入他们已知的标题列表非常快。在他们这样做之前,请   禁用该设置。我认为它们不是唯一的防火墙解决方案   可能有此问题的提供商。你是背后的吗?   header-stripping防火墙?请在下面发表评论!我不是故意的   仅限企业解决方案 - 个人防火墙也可以做到这一点。   我们拥有的名单越大,保留某人的机会就越大   棘手的问题。

     

另一方面,防火墙是否有充分理由剥离您的防火墙   HTTP请求标头?我能想到的只是古老的系统管理员   原则"禁用用户不需要的所有内容,然后转到   提前并禁用更多。"