某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题

某墙墙了古古路,一些开源的东东里用了古古路CDN,比如Exceptional,Opserver ,导致服务要么慢要么用不了

必须要替换之

Exceptional就只要用Response.Filter替换个页面了,因为自己维护个版本还要定期合并什么的,操心

 internal class ResponseStream : MemoryStream
        {

            #region ctor

            private Stream Output { get; set; }
            public HttpContextBase Context { get; set; }

            /// <summary>
            /// 页面输出的Stream Buffer
            /// </summary>
            public List<byte> BytesArray { get; set; }

            public ResponseStream(HttpContextBase context)
            {
                Context = context;
                Output = context.Response.Filter;
                context.Response.BufferOutput = true;
                context.Response.Buffer = true;
                BytesArray = new List<byte>();
            }

            #endregion

            public override void Write(byte[] buffer, int offset, int count)
            {
                if (Context.Response.ContentType != "text/html")
                {
                    Output.Write(buffer, offset, count);
                    return;
                }
                BytesArray.AddRange(buffer);
            }

            public override void Close()
            {
                if (BytesArray.Count > 0)
                    CloseByReplace();
                Output.Close();
                base.Close();
            }

            private void CloseByReplace()
            {
                var html = Encoding.UTF8.GetString(BytesArray.ToArray(), 0, BytesArray.Count);
                var sb = new StringBuilder(html);

                sb.Replace("//ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js", "http://libs.baidu.com/jquery/1.7.2/jquery.min.js");
                var outputBytes = Encoding.UTF8.GetBytes(sb.ToString());
                Output.Write(outputBytes, 0, outputBytes.Length);
            }

        }

Action对应的改为:

        public ActionResult Exceptions()
        {
            var context = System.Web.HttpContext.Current;
            context.Response.Filter = new ResponseStream(HttpContext);
            var page = new HandlerFactory().GetHandler(context, Request.RequestType, Request.Url.ToString(),
                Request.PathInfo);
            page.ProcessRequest(context);

            return null;
        }

某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题

时间: 2024-10-07 22:10:20

某墙尼妹,用个Response.Filter来解决StackExchange.Exceptional中google cdn的问题的相关文章

收藏一篇关于Asp.net Response.Filter的文章

Capturing and Transforming ASP.NET Output with Response.Filter https://weblog.west-wind.com/posts/2009/Nov/13/Capturing-and-Transforming-ASPNET-Output-with-ResponseFilter 摘要:使用Response.Filter来进行内容处理的时候,一定要注意,为了让IIS更好的使用内存,Response.Filter的输出并不是把整块内容一起

Javaweb 使用Servlet技术改写用户登录 使用Filter技术解决中文乱码

先把实验3的jsp页面复制过来: WebContent->WEB-INF->lib下面的jar包8.0版本也要记得复制: Java Resources->src下的 cn.edu.henu.bean(User.java 用户数据库操作)和cn.edu.henu.util(DBConnection.java 数据库的连接操作)这两个包 <?xml version="1.0" encoding="UTF-8"?> <web-app x

调用Response.Redirect 捕获异常 解决办法(摘抄)

如果使用 Response.End.Response.Redirect 或 Server.Transfer 方法,将出现 ThreadAbortException 异常.您可以使用 try-catch 语句捕获此异常.Response.End 方法终止页的执行,并将此执行切换到应用程序的事件管线中的 Application_EndRequest 事件.不执行 Response.End 后面的代码行.此问题出现在 Response.Redirect 和 Server.Transfer 方法中,因为

使用过滤器(Filter)解决请求参数中文乱码问题(复杂方式)

前述: 在写这篇笔记之前,对笔记中的设计模式进行介绍: 本篇笔记中将要使用到的设计模式是:装饰(包装)设计模式 (1)装饰(包装)设计模式口诀: ①定义一个类,实现被装饰对象的接口 ②定义一个成员变量,记住被装饰对象的引用 ③定义构造方法,传入被装饰对象的实例 ④改写要修改的方法 ⑤不需要改写的方法,调用被装饰对象的原来的方法 (2)什么时候使用装饰设计模式 当我们需要对一个类进行增强的时候,增强后的类不再当前类的范畴 例如:现在有一个     Animal类     Cat和Dog都属于动物类

java web Filter过滤器解决乱码

package com.kt.filter; import java.io.IOException; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.Serv

利用Filter技术解决中文乱码的简单实现

web.xml的配置 <filter> <filter-name>FilterTest01</filter-name> <filter-class>com.baowei.fiiter.FilterTest01</filter-class> <init-param> <param-name>charset</param-name> <param-value>utf-8</param-value&

利用Filter技术解决中文乱码的终极实现

利用包装类,解决乱码问题 web.xml的配置 <filter> <filter-name>CharacterEncodingFilter2</filter-name> <filter-class>cn.itcast.web.filter.example.CharacterEncodingFilter2</filter-class> </filter> <filter-mapping> <filter-name>

java项目中通过添加filter过滤器解决ajax跨域问题

1.在web.xml添加filter <filter> <filter-name>contextfilter</filter-name> <filter-class>com.cf.hr.filter.WebContextFilter</filter-class> </filter> <filter-mapping> <filter-name>contextfilter</filter-name> &

Webform(五)——内置对象(Response、Request)和Repeater中的增删改

一.内置对象 (一)Response对象 1.简介:response 对象在ASP中负责将信息传递给用户.Response对象用于动态响应客户端请求,并将动态生成的响应结果返回到客户端浏览器中,使用Response对象可以直接发送信息给浏览器,重定向浏览器到另一个URL或设置cookie的值等. 2.方法:①.write方法:response.write ** 功能:向客户端发送浏览器能够处理的各种数据,包括:html代码,脚本程序等. 实例:response.write "I LOVE YOU