asp.net mvc项目实记-开启伪静态-Bundle压缩css,js

百度这些东西,还是会浪费了一些不必要的时间,记录记录以备后续

一、开启伪静态

如果不在web.config中配置管道开关则伪静态无效

  1. 首先在RouteConfig.cs中中注册路由 routes.MapRoute( name: "index", url: "index.html", defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
  2. 在web.config中的system.webServer节点添加配置项
    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true" />
    </system.webServer>

二、使用Bundle压缩css,js

  1. 添加Nuget包Microsoft.AspNet.Web.Optimization
  2. 配置BundleConfig.cs文件 public class BundleConfig { public static void RegisterBundles(BundleCollection bundles) { //若runAllManagedModulesForAllRequests未配置则不不能使用.css,.js等带后缀的静态资源名称,反之即可 bundles.Add(new StyleBundle("~/Content/maincss").Include( "~/Content/assets/css/main.css", "~/Content/assets/css/md.css" )); bundles.Add(new ScriptBundle("~/Content/listjs").Include( "~/Content/assets/js/xss.js", "~/Content/assets/js/meMd.js", "~/Content/assets/js/marked.js", "~/Content/assets/js/dragscroll.js" )); //强制开启压缩,或者由system.web节点的compilation【debug】值控制(即debug模式下不压缩合并) //BundleTable.EnableOptimizations = true; } }
  3. 在Global.asax的Application_Start()中注册配置 BundleConfig.RegisterBundles(BundleTable.Bundles);
  4. 需要注意的地方
    1. StyleBundle构造函数中的路径为虚拟路径,即不用关心目录是否存在
    2. 若web.config中配置了<modules runAllManagedModulesForAllRequests="true" />,则序StyleBundle传递的虚拟路径可以包含后缀名.css/.js
    3. Bundle压缩合并功能可由web.config中的system.web节点下<compilation debug="false" targetFramework="4.5" />的debug值控制,或者在RegisterBundles方法中强制启用:BundleTable.EnableOptimizations = true;

三、layui富文本编辑器中的文件上传接口

public class FileController : Controller
{
    private static readonly string[] ImageFileExtensions = GetConfigValue("ImgExts").Split(',') ?? new string[] { ".jpg", ".jpeg", ".gif", ".png", ".bmp", ".ico" };
    private static readonly string ImageDomain = GetConfigValue("ImgDomain");//末尾不带/
    private static readonly string UploadDir = GetConfigValue("UploadDir", "/uploads/");//相对路径吧
    private static readonly int UploadMaxLength = int.Parse(GetConfigValue("UploadMaxLength", "5242880"));//默认最大5M

    private static string GetConfigValue(string key, string def = "")
    {
        return System.Configuration.ConfigurationManager.AppSettings[key] ?? def;
    }
    [HttpPost]
    public ActionResult Upload(HttpPostedFileBase file)
    {

        if (file == null)
        {
            return Json(new
            {
                code = -1,
                msg = "未上传任何东西!"
            });
        }
        if (file.ContentLength > UploadMaxLength)
        {
            return Json(new
            {
                code = -1,
                msg = "文件大小不能超过5M!"
            });
        }
        string ext = Path.GetExtension(file.FileName);
        if (ImageFileExtensions.Any(e => e == ext))
        {
            return Json(new
            {
                code = -1,
                msg = "不支持此文件格式"
            });
        }
        string fileName = Guid.NewGuid().ToString() + ext;
        string saveDir = System.Web.HttpContext.Current.Request.MapPath(UploadDir);
        if (!Directory.Exists(saveDir))
        {
            Directory.CreateDirectory(saveDir);
        }
        string savePath = Path.Combine(saveDir, fileName);
        file.SaveAs(savePath);
        return Json(new
        {
            code = 0,
            msg = "上传成功",
            data = new
            {
                src = ImageDomain + UploadDir + fileName,
                title = ""
            }
        });
    }

}

四、使用js-xss进行xss的防御

  1. 提交的内容会包含html,输出的时候又是用js追加的,不处理下简直要命。
  2. 保存xss.js到本地并在页面中引用
  3. 使用filterXss(html,options)调用函数处理,根据规则将规则内的html编码 // 使用函数名 filterXSS,用法一样 var html = filterXSS('<script>alert("xss");</script>'); console.log(html);//"&lt;script&gt;alert("xss");&lt;/script&gt;"
  4. 实际使用 执行结果对比

js //定义自己的规则 var myXssOptions = function (isEditer) { return { onTagAttr: function (tag, name, value, isWhiteAttr) { //保留style标签 默认会将style给干掉 if (name == 'style') { return "style='" + value + "'"; } //替换src为lay-src做懒加载 if (!isEditer && tag == 'img' && name == 'src') { return "lay-src='" + value + "'"; } } } };

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏逸鹏说道

EF批量操作数据与缓存扩展框架

在原生的EF框架中,针对批量数据操作的接口有限,EF扩展框架弥补了EF在批量操作时的接口,这些批量操作包括:批量修改、批量查询、批量删除和数据缓存,如果您想在E...

4076
来自专栏博客园

持久化方式

HttpContext抽象提供了一个简单的IDictionary<Object,Object>类型的字典集合,叫做Items。在每个请求中,这个集合从HttpR...

1222
来自专栏Golang语言社区

关于JSON.stringify和Unicode编码,需要注意的几点

1JSON.stringify会自动把所要转换内容中的汉字转换为Unicode编码 2浏览器间有差别,个别浏览器会把将要提交表单内容中的Unicode编码自动转...

3704
来自专栏跟着阿笨一起玩NET

ASP.NET用HttpListener实现文件断点续传

本文转载:http://www.cnblogs.com/TianFang/archive/2007/01/03/610739.html

951
来自专栏ASP.NET MVC5 后台权限管理系统

ASP.NET MVC5+EF6+EasyUI 后台管理系统(63)-Excel导入和导出-自定义表模导入

前言 上一节使用了LinqToExcel和CloseXML对Excel表进行导入和导出的简单操作,大家可以跳转到上一节查看: ASP.NET MVC5+EF...

3955
来自专栏智能大石头

XCode读取Excel数据(适用于任何数据库)

虽然是充血模型,虽然是强类型,XCode同样支持遍历任何数据库结构,并以强类型(相对于DataSet等字典访问)方式读取数据。 要遍历数据库结构是很容易的事情,...

2148
来自专栏Golang语言社区

关于JSON.stringify和Unicode编码,需要注意的几点

1JSON.stringify会自动把所要转换内容中的汉字转换为Unicode编码 2浏览器间有差别,个别浏览器会把将要提交表单内容中的Unicode编码自动转...

3948
来自专栏林德熙的博客

win10 uwp 网络编程 带Header的WebRequest获取BufferHttpClient 使用 Cookie

上面传输的头,Head=Head+length 中的第二个Head,包含 传输者id,当前传输是传输的消息最后一段还是中间,当前传输 是服务器第消息

1021
来自专栏恰同学骚年

自己动手写一个简单的MVC框架(第二版)

  在ASP.NET MVC中,最核心的当属“路由系统”,而路由系统的核心则源于一个强大的System.Web.Routing.dll组件。

922
来自专栏GuZhenYin

ASP.NET Core文件上传与下载(多种上传方式)

官方机器翻译的地址:https://docs.microsoft.com/en-us/aspnet/core/mvc/models/file-uploads

2260

扫码关注云+社区

领取腾讯云代金券