글꼴 파일이 ASP로 로드되지 않습니다.NET 번들
내 ASP에서.NET MVC 애플리케이션, 나는 번들을 사용하여 css와 js 파일을 압축하고 있습니다.문제는 최적화 모드를 활성화한 후 글꼴이 로드되지 않는다는 것입니다.
BundleTable.EnableOptimizations = true;
여기 C# 코드가 있습니다.
public static void RegisterBundles(BundleCollection bundles) {
RegisterStyles(bundles);
BundleTable.EnableOptimizations = true;
}
private static void RegisterStyles(BundleCollection bundles) {
bundles.Add(new StyleBundle("~/BundleStyles/css").Include(
"~/Content/Styles/bootstrap/bootstrap.css",
"~/Content/Styles/reset.css",
"~/Content/Styles/gridpack/gridpack.css",
"~/Content/Styles/fontFaces.css",
"~/Content/Styles/icons.css",
"~/Content/Styles/inputs.css",
"~/Content/Styles/common.css",
"~/Content/Styles/header.css",
"~/Content/Styles/footer.css",
"~/Content/Styles/cslider/slider-animations.css",
"~/Content/Styles/cslider/slider-base.css"));
}
그리고 여기 글꼴에 대한 css가 있습니다.
@font-face {
font-family: ProximaNova;
src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
font-weight: bold;
font-style: normal;
}
페이지에서 CSS를 참조하는 방법은 다음과 같습니다.
<link href="/BundleStyles/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/>
하지만 Chrome Debugger 도구로 확인해보니, 글꼴 파일이 페이지에 로드되지 않고 잘못된 글꼴로 인해 페이지가 불량해 보입니다.
내가 뭘 잘못하고 있는 거지?
음, 저는 당신의 글꼴 위치에 문제가 있다고 생각합니다.CSS 가상 위치 번들이/BundleStyles/css
실제로 존재하지 않습니다. 그리고 만약 당신의 폴더가 아래와 같은 구조라면.
내용 > 글꼴
내용 > 스타일
만약 이것이 사실이라면, 이것을 시도해 보세요.
바꾸다/BundleStyles/css
로./Content/css
<link href="/Content/css?v=pANk2exqBfQj5bGLJtVBW3Nf2cXFdq5J3hj5dsVW3u01" rel="stylesheet"/>
그리고 당신의 글꼴을 이렇게 참조합니다.
src: url('Fonts/ProximaNova/ProximaNova-Bold.otf')
이 경우 글꼴은 내용 폴더 안에 있는 "filename" 파일에 상대적으로 로드됩니다. 내용 폴더 안에는 "filename" 폴더도 포함되어 있습니다.
제가 가정한 것이 틀리면 파일을 어떻게 구성했는지 보여주십시오.
CssRewriteUrlTransform이 방법일 수 있다고 생각합니다.
다음과 같이 사용:
.Include("~/Content/bootstrap-cosmo.min.css", new CssRewriteUrlTransform())
나를 위해 일했습니다.
위의 답변은 훌륭합니다.
어떤 이유로 인해 위에서 언급한 내용이 효과가 없다면 @font-face src 속성이 'Fonts' 폴더를 참조하는 방법을 변경하는 것이 좋습니다. '../-'ing은 번들링에 매우 적합하지 않으므로 대신 사이트 루트 폴더에서 직접 참조합니다.'Fonts' 폴더가 루트에서 하나 아래에 있다고 가정하면 다음과 같이 변경합니다.
@font-face {
src: url('../Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
}
대상:
@font-face {
src: url('/Fonts/ProximaNova/ProximaNova-Bold.otf') format('opentype');
}
사이트가 디버그 모드로 실행될 때도 동일한 결과를 검색할 수 있습니다.
저는 오늘 이 문제에 부딪혀 온라인에서 이것을 찾았습니다.제가 성공한 것은 다음과 같습니다.
- /bundle/은 실제로 문제가 되지 않았습니다(먼저 시도했습니다).
- 저는 작은 따옴표를 큰 따옴표로 바꿨고 글꼴은 작동했습니다. 하지만 이유를 알 수 없습니다. 누군가 알고 있다면 언제든지 자세히 설명해 주십시오.
이 문제의 해결책을 찾는 데 시간이 걸렸습니다.이 게시물을 찾을 때까지 아무 것도 작동하지 않았습니다: https://mitchelsellers.com/blog/article/avoiding-unexpected-bundling-issues-with-asp-net-mvc
요약하자면, 번들을 참조하는 경로가 웹 앱 파일 폴더 구조와 겹치지 않도록 해야 합니다.제 경우 CSS 번들은 ~/Content/css 폴더에 있는 파일과 같은 경로를 가지고 있습니다.번들 참조의 이름을 "~/css"(이 이름의 파일 폴더 없음)로 변경하여 오류가 사라졌습니다.
언급URL : https://stackoverflow.com/questions/19000083/font-files-are-not-loading-with-asp-net-bundles
'programing' 카테고리의 다른 글
Swift UI - Swift에 해당하는 popViewController가 있습니까?UI? (0) | 2023.08.08 |
---|---|
MS SQL Linked Server to MariaDB(Mysql)가 읽기 전용 mariadb 사용자와 함께 작동하지 않음 (0) | 2023.08.08 |
도커 합성, 백엔드 앱 + 데이터베이스를 모두 포함하는 이미지를 만드는 방법/ (0) | 2023.08.08 |
아이폰 앱에 파이썬 내장 (0) | 2023.08.08 |
MariaDB Authentication Plugin을 수정하는 방법 - PAM? (0) | 2023.08.08 |