我在c#中创建代理服务器。我做了它的工作,除了部分回发的情况。在部分回发期间,它抛出异常说
Sys.WebForms.PageRequestManagerParserErrorException:无法解析从服务器收到的消息。此错误的常见原因是通过调用Response.Write(),响应过滤器,HttpModules或服务器跟踪来修改响应时。
详细信息:解析'
附近时出错<!DOCTYPE html P'。
当我尝试直接访问时,应用程序正常工作。当我通过我的代理服务器访问时发生错误。常见原因,错误请求在应用程序中不存在,因为它在直接访问时工作正常。
在正常回发和异步回发之间我不知道存在一些差异。当我调试时,我发现正常和部分回发之间没有任何区别。从我知道的错误,代理服务器返回整个页面html而不是仅返回UpdatePanel html。
任何人都可以帮助如何使其正常工作吗?
我的代理服务器应用程序基本上是在任何httprequest的特定端口上侦听,并且基于它获得的HttpListenerRequest,它创建一个HttpWebRequest并将请求发送到原始Web应用程序。然后它接收HttpWebResponse并从中创建一个HttpListenerResponse并将其发送到浏览器。
我的代码基于http://www.codeproject.com/KB/IP/reverseproxy.aspx
中提供的代码提前致谢
答案 0 :(得分:0)
我找到了问题的解决方案。普通的HttpListenerRequest和部分HttpListenerRequest之间有一些区别。实际上帧添加了一个名为“x-microsoftajax”的标题。在创建HttpWebRequest时,您还要添加此Header。这将解决ParserError,但如果您使用的是表单身份验证,它会将您重定向到登录页面。通过将HttpListenerRequest中的“Cookie”标头添加到您的HttpWebRequest,您也可以解决此问题。