博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MVC静态化
阅读量:4703 次
发布时间:2019-06-10

本文共 3547 字,大约阅读时间需要 11 分钟。

//添加StaticFileWriteFilterAttribute public class StaticFileWriteFilterAttribute : FilterAttribute, IResultFilter    {        public void OnResultExecuted(ResultExecutedContext filterContext)        {        }        public void OnResultExecuting(ResultExecutingContext filterContext)        {            filterContext.HttpContext.Response.Filter = new StaticFileWriteResponseFilterWrapper(filterContext.HttpContext.Response.Filter, filterContext);        }        class StaticFileWriteResponseFilterWrapper : System.IO.Stream        {            private System.IO.Stream inner;            private ControllerContext context;            public StaticFileWriteResponseFilterWrapper(System.IO.Stream s, ControllerContext context)            {                this.inner = s;                this.context = context;            }            public override bool CanRead            {                get { return inner.CanRead; }            }            public override bool CanSeek            {                get { return inner.CanSeek; }            }            public override bool CanWrite            {                get { return inner.CanWrite; }            }            public override void Flush()            {                inner.Flush();            }            public override long Length            {                get { return inner.Length; }            }            public override long Position            {                get                {                    return inner.Position;                }                set                {                    inner.Position = value;                }            }            public override int Read(byte[] buffer, int offset, int count)            {                return inner.Read(buffer, offset, count);            }            public override long Seek(long offset, System.IO.SeekOrigin origin)            {                return inner.Seek(offset, origin);            }            public override void SetLength(long value)            {                inner.SetLength(value);            }            public override void Write(byte[] buffer, int offset, int count)            {                inner.Write(buffer, offset, count);                try                {                    string p = context.HttpContext.Server.MapPath(HttpContext.Current.Request.Path);                    if (Path.HasExtension(p))                    {                        string dir = Path.GetDirectoryName(p);                        if (!Directory.Exists(dir))                        {                            Directory.CreateDirectory(dir);                        }                        if (File.Exists(p))                        {                            File.Delete(p);                        }                        File.AppendAllText(p, System.Text.Encoding.UTF8.GetString(buffer));                    }                }                catch                {                }            }        }    }

 

在Global.asax中的RegisterRoutes 添加路由

 

routes.MapRoute(                "HTMLDefault", // Route name                "Subject/Index/{ArticleId}_{PageIndex}.html", // URL with parameters                new { controller = "Subject", action = "Index", ArticleId = 0, PageIndex=0 } // Parameter defaults                );

 

在位于View层的web.config中添加Handler

 

对需要静态化的Action上添加属性标签

[StaticFileWriteFilter]public ActionResult Index(int ArticleId,int pageIndex)

转载于:https://www.cnblogs.com/TeyGao/archive/2012/06/01/2530743.html

你可能感兴趣的文章
0816 1459 json & pickle ,目录导入,目录规范
查看>>
Alpha 冲刺 (10/10)
查看>>
哈希取余法、哈希表大小取质数的问题
查看>>
asp.net mvc 3.0 远程验证步骤
查看>>
DAL BLL 模板(事务操作)(事务操作中再执行事务操作)
查看>>
内存检测
查看>>
Egret的一些性能优化
查看>>
express中间件的理解
查看>>
Java小案例——对字符串进行加密解密
查看>>
JavaScript规范
查看>>
java Map及Map.Entry详解
查看>>
Docker 启动报错 Error starting daemon: SELinux is not supported with the overlay2 ...alse)
查看>>
基于Spring4+SpringMVC4+Mybatis3+Hibernate4+Junit4框架构建高性能企业级的部标1077视频监控平台...
查看>>
对于两个初始时设置为Sensor的刚体,不会触发preSolve和postSolve
查看>>
将图片url转换为base64与file对象
查看>>
SecureCRT常见配置
查看>>
前后端解决跨域问题
查看>>
重写toFixed()方法
查看>>
TensorFlow入门之MNIST最佳实践-深度学习
查看>>
UIActivityIndicatorView 的使用
查看>>