Mvc 에서 번들링은 lionbridge 사이트를 통해 확인합니다 크세루리트우를트란스포르마 ',' 우리가 사용하는 이미지 url 에서 작동합니까 동적임 번들에는 css 파일.
하지만 이 가상 디렉터리인 이리에 때만 사용하지 않을 때
'하지만' 에서 'http://localhost/ http://localhost/VirttualDir' 작동하지 않습니다. 이 때문에 '는' 크세루리트우를트란스포르마 트란포름 언약보다는 시행하십시오 고려하여 가상 폴더에서는 또 uirl. 만일 한 것으로 보인다 '는' 진짜 '이미지' 는 잘못된 경로를 localhost/vdir/content/img/foo.png 재작성할 redhat. localhost/content/img/foo.png
'Here i am not 문제가 완전히 이해할 수 있지만, 반드시 보고' http://localhost 잘못된 것 같다. 대한 url 을 사용하여 번들에는 절대 안 됩니다.
여기에 내가 어떻게 작동됨 가져다줄래요 크세루리트우를트란스포르마 완벽하게 사용할 수 있다.
bundles.Add(new StyleBundle("~/bundles/css").Include(
"~/Content/css/*.css", new CssRewriteUrlTransform()));
" Bundles"; 가상 플레이어임.
이를 통해?
I was 를 혼동하는 " VirtualDir"; iis 버추두리 얘기를 할 때, 그리고 제 생각에 번들에는 버추두리! # 39 의 it& 사실이 아닌 것으로 이 경우 크세루리트우를트란스포르마 재작성할 url 을 호스트에서는 호스트에서는 / 버추두리 uri 입니다.
이를 위해 할 수 있도록 크세루리트우를트란스포르마 파생합니다 do what you need it. 좋은 토론 여기 있습니다. [https://stackoverflow.com/questions/12577108/asp-net-mvc4-bundling-with-twitter-bootstrap? rq = 1] [1]
가장 좋은 답이 있을 것 같다. 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);
}
}
대신 이 클래스를 사용하여 크세루리트우를트란스포르마
[1]: https://stackoverflow.com/questions/12577108/asp-net-mvc4-bundling-with-twitter-bootstrap? rq = 1
난 이미 동일한 문제가 발생합니다. This is how I 고정식입니다 있다.
private class ProperUrlRewrite : IItemTransform
{
private static string RebaseUrlToAbsolute(string baseUrl, string url)
{
if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(baseUrl) || url.StartsWith("/", StringComparison.OrdinalIgnoreCase) || url.Contains(':'))
return url;
return VirtualPathUtility.Combine(baseUrl, url);
}
private static Regex UrlPattern = new Regex("url\\s*\\(['\"]?(?<url>[^)]+?)['\"]?\\)");
public string Process(string includedVirtualPath, string input)
{
if (includedVirtualPath == null)
throw new ArgumentNullException("includedVirtualPath");
if (string.IsNullOrWhiteSpace(input))
return input;
string directory = VirtualPathUtility.GetDirectory(VirtualPathUtility.ToAbsolute(includedVirtualPath));
if (!directory.EndsWith("/", StringComparison.OrdinalIgnoreCase))
directory += "/";
return UrlPattern.Replace(input, match => "url(" + ProperUrlRewrite.RebaseUrlToAbsolute(directory, match.Groups["url"].Value) + ")");
}
}
그래서 그냥 그랬다고 실행될 경우, http://your-site.com/, http://your-site.com/your-app/ you& app 실행됩니 신앙이니라 실행됩니 # 39, & # 39, 이미지, ll %s/dbase/ext_table. 404 모두 충족하는 때문에 기본값입니다 CssFixRewriteUrlTransform& # 39. / # 39, & # 39 는 함께, 기존 이미지 참조.
이:
public class CssFixRewriteUrlTransform: IItemTransform {
private static string ConvertUrlsToAbsolute(string baseUrl, string content) {
if (string.IsNullOrWhiteSpace(content)) {
return content;
}
var regex = new Regex("url\\(['\"]?(?<url>[^)]+?)['\"]?\\)");
return regex.Replace(content, match = > string.Concat("url(", RebaseUrlToAbsolute(baseUrl, match.Groups["url"].Value), ")"));
}
public string Process(string includedVirtualPath, string input) {
if (includedVirtualPath == null) {
throw new ArgumentNullException("includedVirtualPath");
}
var directory = VirtualPathUtility.GetDirectory(includedVirtualPath);
return ConvertUrlsToAbsolute(directory, input);
}
private static string RebaseUrlToAbsolute(string baseUrl, string url) {
if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(baseUrl) || url.StartsWith("/", StringComparison.OrdinalIgnoreCase)) {
return url;
}
if (!baseUrl.EndsWith("/", StringComparison.OrdinalIgnoreCase)) {
baseUrl = string.Concat(baseUrl, "/");
}
return VirtualPathUtility.ToAbsolute(string.Concat(baseUrl, url));
}
}
참고: 만약 모든 파일 삭제, css, t, t # 39 와 지미 이크스 don& # 39 이 doesn& 수리입니다.
나는 문제가 포함된 url 을 data" "; 그래서 저는 다시 하다, regex 는 심지어 uirl 내부 다른 이것이 나의 해결책:
public string Process(string includedVirtualPath, string input)
{
if (includedVirtualPath == null)
{
throw new ArgumentNullException(nameof(includedVirtualPath));
}
if (string.IsNullOrWhiteSpace(input))
{
return input;
}
var directory = VirtualPathUtility.GetDirectory(includedVirtualPath);
if (!directory.EndsWith("/", StringComparison.OrdinalIgnoreCase))
{
directory += "/";
}
return new Regex(@"url\s*\(\s*([\'""]?)(?<scheme>(?:(?:data:)|(?:https?:))?)(?<url>(\\\1|.)*?)\1\s*\)")
.Replace(input, match => string.Concat(
"url(",
match.Groups[1].Value,
match.Groups["scheme"].Value,
match.Groups["scheme"].Value == "" ?
RebaseUrlToAbsolute(directory, match.Groups["url"].Value) :
match.Groups["url"].Value,
match.Groups[1].Value,
")"
));
}
private static string RebaseUrlToAbsolute(string baseUrl, string url)
{
if (string.IsNullOrWhiteSpace(url) || string.IsNullOrWhiteSpace(baseUrl)
|| url.StartsWith("/", StringComparison.OrdinalIgnoreCase))
{
return url;
}
return VirtualPathUtility.ToAbsolute(string.Concat(baseUrl, url));
}
}