Я весь день бился головой об этом.
У меня есть гибридное приложение, asv.net mvc на бэкэнде и угловое на фронтэнде. Мы использовали index.cshtml для загрузки приложения angular, но после обновления до angular 7 оно больше не загружает определенные файлы svg, когда оно находится в рабочем режиме.
Очевидно, после обновления до angular 7, когда он собирает комплект для производства, он выплевывает файлы svg, на которые есть ссылки в scss, как это background-image: url('../../../../../assets/icons/A08_16_info.svg')
, прямо в папку dist:
Забавно то, что svg, на которые ссылаются непосредственно в шаблоне со встроенным стилем, работают нормально, а изображения остаются в папке ресурсов. Это похоже на оптимизацию некоторых веб-пакетов.
Вот как я ссылаюсь на угловые файлы внутри asp.net mvc index.cshtml:
IEnumerable<string> fileEntries = Enumerable.Empty<string>();
List<string> bundles = new List<string>();
fileEntries = Directory.EnumerateFiles(Server.MapPath("~/Scripts/dist"));
bundles.Add("runtime.");
bundles.Add("polyfills");
bundles.Add("styles.");
bundles.Add("scripts.");
bundles.Add("main.");
bundles.Add("*.svg");
}
@foreach (string bundleName in bundles)
{
foreach (string fileName in fileEntries)
{
FileInfo fileInformation = new FileInfo(fileName);
if (fileInformation.Name.Contains(bundleName))
{
if (fileInformation.Name.Contains("styles"))
{
<link href="~/Scripts/dist/@fileInformation.Name" rel="stylesheet" />
}
else if (fileInformation.Name.Contains(".js"))
{
<script src="~/Scripts/dist/@fileInformation.Name"></script>
}
}
}
}
А это консоль браузера:
Это похоже на проблему IIS. Я попытался добавить следующее правило в файл web.config, но ничего не происходит:
<staticContent>
<remove fileExtension=".svg" />
<mimeMap fileExtension=".svg" mimeType="image/svg+xml" />
</staticContent>
Если кто-нибудь столкнется с этой проблемой после обновления до angular 7, я был бы очень признателен за решение этой проблемы.
С уважением!