gpt4 book ai didi

c# - 带或不带虚拟目录的 CssRewriteUrlTransform

转载 作者:IT王子 更新时间:2023-10-29 03:44:53 25 4
gpt4 key购买 nike

我们在我们的站点中使用 MVC 捆绑,CssRewriteUrlTransform 确保图像 url 从动态捆绑 css 文件中工作。

但这仅在不使用虚拟目录时有效,即

http://localhost/VirttualDir 不起作用,但 http://localhost/ 可以。这是因为 CssRewriteUrlTransform 转换在重写 url 时没有考虑虚拟文件夹。因此,如果图像的真实路径是 localhost/vdir/content/img/foo.png,它会将其重写为 localhost/content/img/foo.png,这是错误的

最佳答案

我不确定是否完全理解您的问题,但是在这里看到 http://localhost 似乎是错误的。你不应该为你的包使用绝对 URL。

对我来说,CssRewriteUrlTransform 工作得很好,下面是我如何使用它:

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

“捆绑”是虚拟的。

这有帮助吗?

更新

我对“VirtualDir”这个东西感到困惑,因为你在谈论 IIS VirtualDir,而我在想 Bundle VirtualDir!确实,在这种情况下,CssRewriteUrlTransform 会将 URL 重写到 Host,而不是 Host/VirtualDir URI。

为此,您必须派生 CssRewriteUrlTransform 以使其执行您需要的操作。这里有一个很好的讨论:ASP.NET MVC4 Bundling with Twitter Bootstrap

似乎最好的答案是:http://aspnetoptimization.codeplex.com/workitem/83

public class CssRewriteUrlTransformWrapper : IItemTransform
{
public string Process(string includedVirtualPath, string input)
{
return new CssRewriteUrlTransform().Process("~" + VirtualPathUtility.ToAbsolute(includedVirtualPath), input);
}
}

使用这个类而不是 CssRewriteUrlTransform

关于c# - 带或不带虚拟目录的 CssRewriteUrlTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19765238/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com