C# 如何将文件夹下的请求重定向到另一个文件夹?

C# 如何将文件夹下的请求重定向到另一个文件夹?,c#,asp.net-mvc,C#,Asp.net Mvc,我已经在遗留的MVC项目中实现了绑定,但是现在CSS中的所有相对路径(我无法更改)都失败了,因为它们指向的是/bundles/style/content/images,而不是以前的/content/images 如何将所有请求重定向到bundles/style/content/images到/content/images 捆绑包名称的一个示例可能是: bundles/style/main如图所示,最简单的解决方案通常是对bundle进行命名,使编译后的文件名模仿要从中提取资产的实际目录。例如,如

我已经在遗留的MVC项目中实现了绑定,但是现在CSS中的所有相对路径(我无法更改)都失败了,因为它们指向的是
/bundles/style/content/images
,而不是以前的
/content/images

如何将所有请求重定向到
bundles/style/content/images
/content/images

捆绑包名称的一个示例可能是:

bundles/style/main

如图所示,最简单的解决方案通常是对bundle进行命名,使编译后的文件名模仿要从中提取资产的实际目录。例如,如果我使用此捆绑包名称:

~/content/css
然后,编译后的文件如下所示:

/content/css?v=mGNb6rXCidBW01Yat0fYjijROYRAUCUgazmWOLfWJnQ1
这是可行的,因为这意味着我的相对路径从
/Content
目录开始

你的问题很常见;足够了,例如Bootstrap和FontAwesome的NuGet包实际上将它们的
/font
目录移动到了站点根目录,从那时起,它们的CSS中的相对路径实际上起作用了

如果你想要真正的重写,我认为这只能在IIS级别完成;我将做一些挖掘,看看ASP.NET是否支持本地重写(一个可以与PHP一起使用的
.htaccess
文件)


编辑:像往常一样,Scott Gu出手相救:

因此我发现了一个名为ItemTransformer的项目转换器,它将URL重写为绝对值,以便在绑定后仍能找到资产

创建捆绑包时使用,如下所示:

bundles.Add(new StyleBundle("~/bundles/style/main").Include("~/Content/styles/main.css", new CssRewriteUrlTransform()));

你能为你的捆绑包添加一些名字的例子吗?@TiesonT。我添加了一个bundle名称作为示例,它跳到了一个级别,但没有找到请求。@shenku如果我们被抓住,这只是作弊,对吗?开玩笑;但是,是的,直到有人提出更好的解决方案,这就是我在我的项目中所做的。刚刚找到这个CSSRWriteUrlTransform,将它添加到你的包含修复所有URL:D eek。如果你做了一些特定的事情来修复这个问题,请将它作为一个答案发布,因为我相信我们不是唯一有这个问题的人。发布并接受你自己的答案是完全可以接受的…我已经添加了我的答案。工作100%:D