加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 操纵HTTP响应

发布时间:2020-12-16 09:59:26 所属栏目:asp.Net 来源:网络整理
导读:我目前的问题与 this one密切相关,但更为具体.我们必须为该问题中描述的目标规划设计策略. 我们希望通过在ASP.NET Web表单上重写HTML来实现此目的.我的问题是:根据遗留应用程序的可行性,性能影响和实施工作的参数,哪种策略是最好的. 我该怎么办 基本上是获
我目前的问题与 this one密切相关,但更为具体.我们必须为该问题中描述的目标规划设计策略.

我们希望通过在ASP.NET Web表单上重写HTML来实现此目的.我的问题是:根据遗留应用程序的可行性,性能影响和实施工作的参数,哪种策略是最好的.

我该怎么办

基本上是获取Web窗体的HTML输出,解析它,并根据用户定义的规则替换某些URL.在该示例中,我将所有静态内容重写为CDN URL,但它可以轻松扩展到URL重写技术.从像http://myblog.com/2092这样的URL解释为http://myblog.com/Default.aspx?post=2092的角度,我发现很多关于URL重写的文章(我的意思很多)发现没有人告诉我如何从HTML内部巧妙地将旧式URL格式化为更短格式(因此页面将直接呈现短格式URL)[编辑]而无需深入的代码干预.

策略1

与上述问题的答案中建议的一样,编写一个拦截HTML并重写它的HTTP模块.实际上,我环顾四周,看到我可以设置一个执行HTML过滤的Response.Filter流对象.

>优点:我可以在遗留应用程序上注入HTTP模块,通过XML配置重写规则,让最老的CRM /电子商务应用程序加载来自CDN的静态内容,而无需触及其代码.
>缺点:我怀疑(并且评论here确认我的嫌疑人)必须重新实现Stream的Write方法,该方法在一般情况下对部分缓冲区进行操作,可能导致错误的替换.假设首先使用像ttp://mydomain.com/static/ima这样的块来调用Write方法(其中我假设< img src =“h之前已经写过)以及之后的ge.png”/> (所以猜猜最后的网址:-P)有一个重写规则,将http://mydomain.com/static/[^”]*重新加入http://cdn.com/path/$1,替换没有完成.为了解决这个问题,我可以使用MemoryStream或类似的东西来缓冲整个数据集然后执行替换,但它可能会导致高负载服务器出现问题

策略2

以描述here的方式覆盖Page的Render方法

>优点:不会遇到分块问题
>缺点:需要为所有页面定义基类.新应用程序可行,不确定维护遗留应用程序.似乎有一个问题,因为你无法直接实例化HttpTextWriter

显然,对于我们必须开发的新的webapps,我会采用策略2,但我真的很喜欢使用动态组件,因为它们可以在应用程序需要时轻松插入(所以如果我们的新应用程序安装没有CDN功能已关闭).

简而言之,我的问题是

你如何解决两种策略的缺点(特别是第一)?当然,您是否有其他策略建议实现这一目标?

谢谢.

解决方法

也许你可以使用ASP.NET的“自适应控制行为”功能.见 Architectural Overview of Adaptive Control Behavior

基本上,您将重新定义新的HtmlTextWriter类,将其关联为默认渲染器,并使用您自己的代码覆盖“A”标记呈现.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读