Поставяне на статични файлове в папки, различни от wwwroot

Дата на създаване на страница :

Околната среда

Визуално студио
  • Изглед от 10 до 2008
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://<име на хост>/" в URL адреса. Например файлът в wwwroot\image\sample.png може да бъде намерен в URL адреса под https://<име на хост>/изображение.png усилвател.]

Файловете, поставени извън папката wwwroot, по същество не са посочени от URL адрес в уеб.

Как да поставите статични файлове в допълнение към wwwroot папка и промяна на пътя на препратката на URL адреса

Конфигуриране на папка

Този път искам да напусна функцията на папката wwwroot, но също така да поставя файла с изображения в отделна папка, така че да може да бъде посочен в уеб.

Конфигурацията на папката на проекта трябва да бъде както следва, така че можете да видите файловете с изображения в папката съдържание на всеки сайт в Области.

В това състояние URL адресът .png файла в примера1.png

  • https://<хост име>/арена/site1/content/image/sample1.png

И

  • https://<Име на хост>/site1/content/image/sample1.png

може да изглежда така, но тук

  • https://<Име на хост>/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 свързва физически път с URL https://<ホスト名>/Site1/xxxx адрес.

Използвайки пример 1.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" />
<!-- ここまで追加 -->

Ако го стартирате и видите изображението, това е успех.