Statikus fájlok helye a wwwroottól nem más mappákban

Oldal létrehozásának dátuma :

Környezet

Visual Stúdió
  • Visual Studio 2019
ASP.NET mag
  • 3.1 (Borotva oldal, MVC)

A statikus fájlok alapértelmezett elhelyezési helye

A statikus fájlok (.js, .css, .png stb.) alapértelmezés szerint a wwwroot mappa alatt vannak. Ez lehetővé teszi a webhely felhasználói számára, hogy .js és .css a HTML-et közvetlenül a HTML-rel együtt, és tükrözzék őket a képernyőn.

A statikus fájl alapértelmezett elhelyezési mappája wwwroot, Startup.Configure mert a metódusban app.UseStaticFiles leírt alábbi módszert hívja meg:

public class Startup
{
  // 省略

  public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
  {
    // 省略

    app.UseStaticFiles();

    // 省略
  }
}

A "wwwroot" fizikai mappa elérési útja az URL-ben található "https://<host name>/" . A wwwroot\image\sample.png fájl például a https://<állomásnév>/image.png és minta url-címében található.]

A wwwroot mappán kívül elhelyezett fájlokra lényegében nem hivatkoznak az internetes URL-címről.

Statikus fájlok helye a wwwroot mappán kívül, és a hivatkozási útvonal módosítása az URL-címen

Mappakonfiguráció

Ezúttal szeretném elhagyni a wwwroot mappa funkcióját, de a képfájlt is egy külön mappába szeretném tenni, hogy hivatkozni tudjon a weben.

A projekt mappakonfigurációjának a következőnek kell lennie, így a képfájlok a területek minden egyes helyének Tartalom mappájában láthatók.

Ebben az állapotban az URL-.png a minta1-ben.png

  • https://<hostname>/arenas/site1/content/image/sample1.png

És

  • https://<Állomásnév>/site1/content/image/sample1.png

úgy tűnhet, mintha lenne, de itt

  • https://<Állomásnév>/site1/image/sample1.png

hivatkozni kell.

By the way, ha egy statikus fájlt kívül wwwroot mappát, a build művelet a fájl hiányzik. Ha folytatja a közzétételt, a fájl nem kerül elhelyezve, ezért feltétlenül állítsa vissza tartalomra.

Program hozzáadása

Ha a statikus fájlokat nem wwwroot mappákban is Startup.Configure elérhetővé akarja tenni, hívja a app.UseStaticFiles metódus további módszereit az alábbiak szerint:

// 追加
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 A metódus argumentumok nélküli hívása lehetővé teszi a wwwroot mappát. További beállításokat az StaticFileOptions első argumentumra való átadással adhat hozzá.

StaticFileOptions.FileProvider Itt adhatja PhysicalFileProvider meg azt a fizikai mappát, amelyet a tulajdonság statikus fájlként szeretne hivatkozni a példány átadása közben. Az itt megadott elérési út alatt található fájl egy olyan fájl, amely a weben hivatkozhat. Ez lehet a következő RequestPath tulajdonságok URL-címének gyökere is:

env.ContentRootPath A tulajdonság a webes program gyökérútvonalát (fizikai elérési útját) tartalmazza. Célközönség, hogy ezt kombinálja a célmappa relatív elérési útja.

StaticFileOptions.RequestPath A tulajdonság a statikus fájlra hivatkozó URL gyökérútvonalát írja le. Az alapértelmezett wwwroot https://<ホスト名> alapul . Mint a RequestPath = "/Site1" fenti kód, ha írsz https://<ホスト名>/Site1 a gyökér. Ez Areas/Site1/Content/xxxx összekapcsolja a fizikai https://<ホスト名>/Site1/xxxx elérési utat az URL-címmel.

A minta1 .png példaként a Areas/Site1/Content/image/sample.png fájl https://<ホスト名>/Site1/image/sample.png hivatkozhat az elérési úton.

Művelet ellenőrzése

index.html Helyezze el az img címkét, hogy a kép a következőképpen látható: Az elérési út a webhely1 és a site2 képekre is hivatkozik a meghatározottak szerint.

<!-- 省略 -->

<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" />
<!-- ここまで追加 -->

Ha futtatod, és látod a képet, az sikeres.