首页 > 其他分享 >在静态页中,js和css使用虚拟路径指向网站根目录

在静态页中,js和css使用虚拟路径指向网站根目录

时间:2024-04-03 12:22:06浏览次数:30  
标签:string js content context path var 根目录 public css

第一步:修改web.config

<configuration>
    <system.webServer>
    <handlers>
        <add name="x" verb="GET" path="*.css.ashx" type="FileResolver" />
        <add name="xx" verb="GET" path="*.js.ashx" type="FileResolver" />
        </handlers>
    </system.webServer>
</configuration>

第二步:添加以下代码:

using System;
using System.IO;
using System.Web;

public class FileResolver : IHttpHandler {
#pragma warning disable
    private struct FileCacheItem {
        public FileCacheItem(string content) {
            Content = content;
        }
        public string Content { get; }
        public DateTime DateEntered { get; } = DateTime.Now;
    }
#pragma warning restore
    private FileCacheItem UpdateFileCache(HttpContext context, string path) {
        using var f = new FileStream(path, FileMode.Open, FileAccess.Read);
        using var r = new StreamReader(f);
        var content = r.ReadToEnd();
        r.Close();
        f.Close();
        var root = HttpRuntime.AppDomainAppVirtualPath;
        if (!root.EndsWith("/")) {
            root += "/";
        }
        content = content.Replace("~/", root);
        FileCacheItem item = new(content);
        context.Cache.Insert(path, item, new(path));
        return item;
    }
    public void ProcessRequest(HttpContext context) {
        var path = context.Request.PhysicalPath.Replace(".ashx", "");
        if (path.Contains("~\\")) {
            path = path.Replace("~", "").Replace("\\\\", "\\");
        }
        var res = context.Response;
        if (!File.Exists(path)) {
            res.StatusCode = 404;
            return;
        }
        context.Cache.Get(path);
        res.ContentType = "text/" + GetContentType(Path.GetExtension(path));
        var cache = (FileCacheItem)(context.Cache[path] ?? UpdateFileCache(context, path));
        res.Write(cache.Content);
        res.End();
    }

    private string GetContentType(string ext) => ext.ToLower() switch {
        ".css" => "css",
        ".xml" => "xml",
        ".js" => "javascript",
        _ => "plain",
    };

    public bool IsReusable => true;
}

第三步:添加以下代码

<script src="~/Scripts/jquery-1.8.0.min.js.ashx"></script>

转自:Using the FileResolver to allow virtual application paths ( ~ ) in any file - CodeProject

标签:string,js,content,context,path,var,根目录,public,css
From: https://www.cnblogs.com/ly45/p/18112423

相关文章

  • 基于Node.js和ws库搭建WebSocket服务并实现消息互通的简单示例
    环境要求:Node.js环境安装npm(Node.js的包管理器)步骤:安装Node.js:如果你还没有安装Node.js,请从Node.js官网下载并安装。创建项目:创建一个新的目录作为项目文件夹,并在该目录下初始化一个新的Node.js项目。        mkdirmy-websocket-server        cdmy......
  • js 可以间接地“声明”或初始化变量的其他方式(除了直接使用var、let和const)
    在JavaScript中,除了直接使用var、let和const关键字来声明变量外,还有一些其他方式可以间接地“声明”或初始化变量。以下是一些示例:函数参数:当定义一个函数时,函数的参数列表中的每个参数实际上都会成为该函数作用域内的变量。这些变量在函数被调用时会被自动声明和初始化。func......
  • 纯CSS实现未读消息显示99+
    在大佬那看到这个小技巧,我觉得这个功能点还挺常用,所以给大家分享下具体的实现。当未读消息数小于100的时候显示准确数值,大于99的时候显示99+。1.实现效果2.组件封装<template><spanclass="col"><sup:style="{'--num':num}">{{num}}</sup></span></template......
  • [HTML、CSS]知识点
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032061出自【进步*于辰的博客】注:本文中“子级”指子级盒子或子级标签;“逻辑位置”指根据理论推断的所在位置,“实际位置”指实际显示的所在位置。目录1、其他知识点链接......
  • GIS入门,EPSG:3857介绍,纯JS如何实现简化得Web墨卡托投影的逆变换和高精度Web墨卡托投影
    EPSG:3857坐标系介绍EPSG:3857坐标系,也称为Web墨卡托投影(WebMercatorprojection),是一种用于Web地图的常见投影系统。它是由谷歌地图在2005年引入并广泛采用的。这个投影系统将地球表面的经纬度坐标转换为平面坐标,使得地图在Web上的显示更加方便和流畅。EPSG:3857坐标系使......
  • ASP.NET Core 使用 pdfjs 加载 实时水印 base64 编码的 PDF
    先下载pdfjs:https://github.com/mozilla/pdf.js目前最新版本是4.0.379把需要的文件放到项目下面,由于最新的pdfjs使用的mjs,看情况可以加下MIME类型:varprovider=newFileExtensionContentTypeProvider();provider.Mappings[".mjs"]="application/javascript";provider......
  • 界面组件DevExpress WinForms v23.2 - 进一步增强HTML & CSS支持
    DevExpressWinForms拥有180+组件和UI库,能为WindowsForms平台创建具有影响力的业务解决方案。DevExpressWinForms能完美构建流畅、美观且易于使用的应用程序,无论是Office风格的界面,还是分析处理大批量的业务数据,它都能轻松胜任!DevExpressWinForms控件日前正式发布了v23.2,此......
  • 界面控件DevExtreme JS & ASP.NET Core 2024年度产品规划预览(一)
    在本文中我们将介绍今年即将发布的v24.1附带的主要特性,这些特性既适用于DevExtreme JavaScript(Angular、React、Vue、jQuery),也适用于基于DevExtreme的ASP.NETMVC/Core控件。注意:本文中列出的功能和特性说明官方当前/预计的发展计划,此信息仅供参考之用,其中列出的功能/产品可......
  • TS全栈开发(React+Next.js+Nest.js+UniApp/Vue)项目
    IT环境  我们不可否认从事于互联网相关从业者从产品、开发、测试、运维、销售都吃信息化数字化的红利,对比其他行业薪资高。但从2020年大厂开始裁员、培训机构每年输送大量开发人员、整个国家政府企业工厂信息化建设完成差不多,你们会发现996加班,35岁被降薪裁员,相关IT从业人......
  • 分享three.js实现乐高小汽车
    前言Web脚本语言JavaScript入门容易,但是想要熟练掌握却需要几年的学习与实践,还要在弱类型开发语言中习惯于使用模块来构建你的代码,就像小时候玩的乐高积木一样。应用程序的模块化理念,通过将实现隐藏在一个简单的接口后面,您可以使您的应用程序万无一失且易于使用。它只做它应......