.NET可以拦截和更改css文件吗?

前端之家收集整理的这篇文章主要介绍了.NET可以拦截和更改css文件吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
更新1:

我现在安装了IIS6,所以.NET可以处理对.css文件调用.现在我需要做些什么来改变基于引用URL的css文件?所以如果引用url是http://intranet/,它应该继续调用旧样式表.如果引用url是http://intranetv2/,它应该调用新的样式表.

原题:

的背景:

我有2个搜索引擎. 1是旧的,而另一个是全新的(开发阶段).搜索引擎1位于domain1.com上,搜索引擎2位于domain2.com.两个域都在同一台服务器上.根据用户输入搜索引擎的内容,都可以在domain1.com上搜索网页.两个搜索引擎之间的区别在于,新的搜索引擎更快,产生更准确的结果,并且具有非常大的改进的用户界面.这两个搜索引擎将保持活跃,这样用户就可以在自己的时间内习惯使用新的搜索引擎,而不是仅仅将其投入到最后,并且完全删除旧的搜索引擎.

无论如何,足够的背景,基本上,作为可搜索页面驻留在旧的域名与旧的搜索引擎,而新的搜索引擎是在新的域名,…

问题:

…我可以使用HttpModule,还是.NET的另一部分,还是IIS6中的某些东西,甚至可以捕获新的搜索引擎生成页面链接,并动态更改附加到旧域名上旧的可搜索页面的CSS文件

原因:

实际上,它看起来像一个完整的全新网站,如果旧域名上的搜索引擎用于访问旧域名的页面,则使用旧样式表,但如果新域名上的搜索引擎被用于访问旧域名上的可搜索文件,应使用新的样式表来使旧页面看起来新.由于有大量可搜索页面,在10,000个区域中,在将样式表添加页面之前,编辑每个页面添加if语句以检查引用域名是不现实的选项.

环境:

旧的搜索引擎,以及旧域名上可搜索页面使用.net 1.something,但新的域名上的新搜索引擎是使用.net 3.5,我使用的是vb.net的asp.net页面.服务器是IIS6服务器.

解决方法

>在IIS中,设置HttpHandler以接收所需的所有文件类型(说你已经这样做)
> HttpRequest.Url.AbsolutePath上的用户Server.MapPath()获取物理路径
>根据域修改路径
>将文件写入响应流.

这是一个处理程序(简化的),我常规地使用不同域的服务器备份文件

using System;
using System.IO;
using System.Web;
public class MultiDomainFileHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        string filePath = GetDomainSpecificFilePath(context.Request.Url.Host,context.Server.MapPath(context.Request.Url.AbsolutePath));

        if (File.Exists(filePath))
        {
            switch (Path.GetExtension(filePath).ToLower())
            {
                case ".css": context.Response.ContentType = "text/css"; break;
                case ".jpg":
                case ".jpeg": context.Response.ContentType = "image/jpeg"; break;
                //other types you want to handle
                default: context.Request.ContentType = "application/octet-stream"; break;
            }
            context.Response.WriteFile(filePath); //Write the file to response
        }
        else context.Response.StatusCode = 404;
    }

    private string GetDomainSpecificFilePath(string domain,string originalPath)
    {
        string prefix = "";
        switch (domain.ToLower())
        {
            case "intranetv2": prefix = FILE_PREFIX_INTRANETV2; break;
            case "www.example.com": prefix = FILE_PREFIX_EXAMPLE_DOT_COM; break;
            //other domains you want to handle
        }
        string dir = Path.GetDirectoryName(originalPath);
        string fileName = prefix + Path.GetFileName(originalPath);
        return Path.Combine(dir,fileName);
    }

    const string FILE_PREFIX_INTRANETV2 = "v2.",FILE_PREFIX_EXAMPLE_DOT_COM = "ex.com.";
    public bool IsReusable { get { return false; } }
}

现在,您需要在同一目录中备份文件.例如:

/Images/logo.jpg

/Images/v2.logo.jpg

/Styles/mystyle.css

/Styles/v2.mystyle.css

我希望这有帮助 :)

猜你在找的CSS相关文章