如何在 asp.net 3.5 中创建装饰器代理页面

how to create a decorator proxy page in asp.net 3.5

我正在尝试制作此功能,但我真的卡住了。

我有两个 运行 在同一个域上的应用程序。我需要让一个应用程序从另一个应用程序加载它自己的(第一个)母版页中的页面。

我当然完全控制双方的代码。

我试过使用 HTTPRequest 和 HTTPResponse,我也试过使用 WebBrowser。只要我有静态(纯 HTML)页面,两者都很好用。然而, 这些页面实际上是动态的。用户需要按下服务器端按钮(回发)并且通常使用会话、视图状态、and/or cookies。

因此,HTTPRequest 和 WebBrowser 使我失望,因为它们不会导致回发,因此那些服务器端控件无法正常工作。更重要的是,如果我尝试通过在每次响应后保存 ViewState 来 "fake" 回发,而不是在下一个请求时重新发送它,那么在几次(3-4)次之后原始页面将 return "The state information is invalid for this page and might be corrupted" 错误,即使我使用

EnableViewStateMac ="false" EnableSessionState="True" EnableEventValidation ="false" ValidateRequest ="false" ViewStateEncryptionMode ="从不

所以...有什么办法可以解决这个问题吗?

提前致谢

这里的主要愿望是什么?

  1. 在不更改任何架构的情况下将一个站点的内容封装到另一个站点中?

答案:iframe

  1. 是否有从两个站点提交的单个提交按钮?

答案:这不是个好主意。你可以通过创建一个抓取器和解析器来解决这个问题,但它只有作为一个 "I can do it trophy" 才会很酷。最好重新设计解决方案。但是假设你真的想这样做,你将不得不解析来自嵌入式站点的结果并将提交重定向到新站点。然后该站点将获取这些值并将表单提交到第一个站点并等待结果,它将抓取该结果以响应用户。它实际上要复杂得多,因为您必须解析 HTML DOM(当然,如果所有 HTML 都符合 XHTML 则更容易)来计算找出要拦截的内容。

警告:对嵌入式站点的任何更改都可能破坏您的代码,因此维护第一个站点的人员必须意识到这种人为创建的依赖关系,因此他们不会更改任何可能导致问题的内容。哎哟,这听起来很脆弱! ;-)

  1. 其他?

如果使用 iFrame 不起作用,那么我会查看业务问题并制定理想的架构来解决它,这可能意味着通过 Web 服务为第二个站点提供嵌入式站点的功能.