Поместите статические файлы в папки, кроме wwwroot
окружающая среда
- Визуальная студия
-
- Визуальная студия 2019
- ASP.NET ядро
-
- 3.1 (Страница бритвы, MVC)
О местоположении размещения по умолчанию для статических файлов
Статические файлы (.js, .css, .png и т.д.) по умолчанию находятся под папкой wwwroot. Это позволяет пользователям веб-сайта видеть .js и .css файлы непосредственно вместе с HTML и отражать их на экране.
Папка размещения по умолчанию для этого статического файла wwwroot, Startup.Configure
потому что он называет следующий app.UseStaticFiles
метод, описанный в методе:
public class Startup
{
// 省略
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略
app.UseStaticFiles();
// 省略
}
}
Путь физической папки "wwwroot" является "https://lt;host name'gt;/" в URL. В качестве примера, файл в wwwroot-образный образец.png можно найти в URL под https://lt;host name'gt;/image.png и образец.»
Файлы, размещенные за пределами папки wwwroot, по существу не ссылаются на URL-адрес в Интернете.
Как разместить статические файлы в дополнение к папке wwwroot и изменить путь ссылки на URL
Конфигурация folder
На этот раз я хочу оставить функцию папки wwwroot, но и поместить файл изображения в отдельную папку, чтобы его можно было ссылаться в Интернете.
Конфигурация папки проекта должна быть следующей, чтобы можно было видеть файлы изображений в папке Содержимое каждого сайта в областях.
В этом состоянии URL-.png файл в примере1.png
- https://lt;hostname-gt;/arenas/site1/content/image/sample1.png
и
- https://lt;Hostname-gt;/site1/content/image/sample1.png
может показаться, что это было бы, но здесь
- https://lt;Hostname-gt;/site1/image/sample1.png
для ссылки в .
Кстати, если вы поместите статический файл в дополнение к папке wwwroot, действие сборки файла может быть отсутствует. Если вы продолжаете публиковать, файл не будет размещен, так что не забудьте установить его обратно в содержание.
Добавить программу
Чтобы сделать статические файлы доступными в папках, не являяся wwwroot, Startup.Configure
позвоните app.UseStaticFiles
дополнительным методам в методе следующим образом:
// 追加
using Microsoft.Extensions.FileProviders;
using System.IO;
// 省略
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 省略
// wwwroot フォルダで静的ファイル参照を有効にする
app.UseStaticFiles();
// Site1 用の物理コンテンツフォルダと参照 URL を紐づける
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Areas/Site1/Content")),
RequestPath = "/Site1",
});
// Site2 用の物理コンテンツフォルダと参照 URL を紐づける
app.UseStaticFiles(new StaticFileOptions()
{
FileProvider = new PhysicalFileProvider(Path.Combine(env.ContentRootPath, "Areas/Site2/Content")),
RequestPath = "/Site2",
});
// 省略
}
app.UseStaticFiles
Вызов метода без аргументов позволяет папку wwwroot.
Вы можете добавить StaticFileOptions
дополнительные настройки, передав к первому аргументу.
StaticFileOptions.FileProvider
Определяет физическую PhysicalFileProvider
папку, которую вы хотите, чтобы свойство относиться к статическому файлу при передаче экземпляра .
Файл под указанным здесь путем является файлом, на который можно ссылаться в Интернете.
Он также может быть RequestPath
корнем URL для следующих свойств:
env.ContentRootPath
Свойство содержит корневой путь (физический путь) веб-программы.
Это хорошая идея, чтобы объединить это с относительным путем к целевой папке.
StaticFileOptions.RequestPath
Свойство описывает корневой путь URL-адреса, который ссылается на статический файл.
Wwwroot по https://<ホスト名>
умолчанию основан на .
Как и в RequestPath = "/Site1"
вышеупомянутом коде, если вы пишете
https://<ホスト名>/Site1
является корнем.
Это Areas/Site1/Content/xxxx
связывает физический https://<ホスト名>/Site1/xxxx
путь с URL.
Используя пример .png примере, Areas/Site1/Content/image/sample.png
файл можно https://<ホスト名>/Site1/image/sample.png
ссылаться на пути.
Проверка работы
index.html
Поместите тег img, чтобы вы могли видеть изображение следующим образом:
Путь также ссылки site1 и site2 изображения, как определено.
<!-- 省略 -->
<div class="text-center">
<h1 class="display-4">Welcome</h1>
<p>Learn about <a href="https://docs.microsoft.com/aspnet/core">building Web apps with ASP.NET Core</a>.</p>
</div>
<!-- ここから追加 -->
<img src="~/image/sample.png" />
<img src="~/site1/image/sample1.png" />
<img src="~/site2/image/sample2.png" />
<!-- ここまで追加 -->
Если вы запустите его и увидеть изображение, это успех.