Col·locar fitxers estàtics en carpetes diferents de wwwroot

Data de creació de la pàgina :

Medi ambient

Estudi Visual
  • Estudi Visual 2019
Nucli ASP.NET
  • 3.1 (Pàgina de la navalla, MVC)

Quant a la ubicació d'emplaçament per defecte per als fitxers estàtics

Els fitxers estàtics (.js, .css, .png, etc.) es determinen de manera predeterminada sota la carpeta wwwroot. Això permet als usuaris del lloc web veure els fitxers .js i .css directament juntament amb HTML i reflectir-los a la pantalla.

La carpeta de col·locació per defecte d'aquest fitxer estàtic és wwwroot Startup.Configure perquè crida al següent mètode descrit al app.UseStaticFiles mètode:

public class Startup
{
  // 省略

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

    app.UseStaticFiles();

    // 省略
  }
}

El camí de la carpeta física "wwwroot" és "https://<nom de l'amfitrió>/" a l'adreça URL. Per exemple, el fitxer de wwwroot\image\sample.png es pot trobar a l'adreça URL a https://<nom de l'amfitrió>/imatge.png i mostra.]

Els fitxers situats fora de la carpeta wwwroot no es fan referència essencialment des d'una adreça URL del web.

Com col·locar fitxers estàtics a més de la carpeta wwwroot i canviar el camí de referència a l'URL

Configuració de la carpeta

Aquesta vegada, vull deixar la funció de la carpeta wwwroot, però també col·locar el fitxer d'imatge en una carpeta separada perquè es pugui fer referència a la web.

La configuració de la carpeta del projecte ha de ser la següent, de manera que pugueu veure els fitxers d'imatge a la carpeta Contingut de cada lloc a Les àrees.

En aquest estat, l'adreça URL .png el fitxer en exemple1.png

  • https://<nom de l'amfitrió>/arenas/site1/content/image/sample1.png

I

  • https://<Nom de l'amfitrió>/lloc1/contingut/imatge/mostra1.png

pot semblar que seria, però aquí

  • https://<Nom de l'amfitrió>/lloc1/imatge/mostra1.png

per fer referència al .

Per cert, si col·loqueu un fitxer estàtic a més de la carpeta wwwroot, pot faltar l'acció de construcció del fitxer. Si continueu publicant, el fitxer no es col·locarà, així que assegureu-vos de tornar-lo a definir al contingut.

Afegeix un programa

Per fer que els fitxers estàtics estiguin disponibles en carpetes que no siguin de wwwroot, Startup.Configure truqueu a mètodes addicionals app.UseStaticFiles al mètode de la manera següent:

// 追加
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 Cridar el mètode sense arguments habilita la carpeta wwwroot. Podeu afegir StaticFileOptions configuracions addicionals passant al primer argument.

StaticFileOptions.FileProvider Especifica la PhysicalFileProvider carpeta física a la qual voleu que la propietat faci referència com a fitxer estàtic mentre passeu una instància del . El fitxer sota el camí especificat aquí és un fitxer al qual es pot fer referència al web. També pot ser RequestPath l'arrel de l'URL per a les propietats següents:

env.ContentRootPath La propietat conté el camí arrel (camí físic) del programa web. És una bona idea combinar-ho amb el camí relatiu a la carpeta de destí.

StaticFileOptions.RequestPath La propietat descriu el camí arrel de l'adreça URL que fa referència al fitxer estàtic. El valor per defecte de wwwroot https://<ホスト名> es basa en . Com en el RequestPath = "/Site1" codi anterior, si escriviu https://<ホスト名>/Site1 és l'arrel. Això Areas/Site1/Content/xxxx enllaça el camí físic https://<ホスト名>/Site1/xxxx amb l'adreça URL.

Utilitzant sample1.png com a exemple, Areas/Site1/Content/image/sample.png es pot fer referència al fitxer al https://<ホスト名>/Site1/image/sample.png camí.

Comprovació de l'operació

index.html Col·loqueu l'etiqueta img perquè pugueu veure la imatge de la manera següent: El camí també fa referència a les imatges site1 i site2 definides.

<!-- 省略 -->

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

Si l'executes i veus la imatge, és un èxit.