Sni.DelWoods Ответов: 1

Asp.net ядро: приложение в субфолере: работа со статическими HTML-файлами


Статический HTML-файл отображается (как необработанный) в простом виде.
Проблема заключается в том, что URL-адреса в html не отображаются "правильно" (в моем случае), поскольку тестовый сайт размещен в подпапке.

Dev-Сайт:
https://localhost:43444/Page1

испытательный участок:
https://www.domain.com/Preview/Page1

Окружающая среда:
ASP.net ядро 3.1 MVC

Понятно, что изображение на испытательном полигоне отсылает к https://www.domain.com/Images/Page1.png.
И (конечно же) изменение src на "~/Images/Page1.png" не оценивается.

Есть решение от Microsoft, но какой путь я должен установить здесь?

Что я уже пробовал:

wwwroot/pages/Page1.htm:
<img src='/Images/Page1.png' />
<img src='~/Images/Page1.png' />


Страницы/Page1.cshtml:
@{
    var htmlContent = System.IO.File.ReadAllText(@$"wwwroot\pages\Page1.htm");
}

@Html.Raw(htmlContent)


подход Microsoft:
// Source: https://docs.microsoft.com/de-de/aspnet/core/fundamentals/static-files?view=aspnetcore-3.1
app.UseStaticFiles(new StaticFileOptions {
      FileProvider = new PhysicalFileProvider(
          Path.Combine(env.ContentRootPath, env.ContentRootPath)),
          RequestPath = "~/"
  });

F-ES Sitecore

Если это буквально просто подпапка, то ваш сайт, вероятно, вообще не будет работать, он должен быть внутри виртуального каталога. Вы можете использовать @Url.Content в своих представлениях для ссылки на статические файлы, но, как я уже сказал, ни один из этих методов не будет работать, если ваш сайт находится просто в обычной подпапке.

1 Ответов

Рейтинг:
8

Sni.DelWoods

Это приложение внутри веб - сайта в IIS
ИИС -&ГТ; домен.ком-сайт (ASP.net 4.5) -&ГТ; добавить приложения-и GT; предварительный просмотр

Таким образом, конфигурация IIS должна быть хорошей. Мне просто нужно заменить URL-адрес (/Images) В HTML-файлах на конечный путь. Как я загружаю HTMLs с помощью системы.IO и рассматривать его как обычный текст хост net Core не изменяет путь сам по себе. Именно в этом и должен заключаться подход Microsoft.

Самый простой способ-это простая замена ~/ через код ~/Preview/- но я не уверен , что это просто быстрый и грязный способ.
htmlContent = htmlContent.Replace("~/","/Preview/") //or using regex;

[2020-10-07] я решил эту проблему описанным способом, который хорошо работает.