Statisko failu novietošana mapēs, kas nav wwwroot

Lapas izveides datums :

Vides

Vizuālā studija
  • Visual Studio 2019
ASP.NET kodols
  • 3.1 (Skuvekļa lapa, MVC)

Par statisko failu noklusējuma novietojuma atrašanās vietu

Tiek noteikts, .js .css, .png u. c.) pēc noklusējuma atrodas zem mapes wwwroot. Tas ļauj vietnes lietotājiem redzēt failus .js un .css failus tieši kopā ar HTML un atspoguļot tos ekrānā.

Šī statiskā faila noklusējuma novietojuma mape ir wwwroot, Startup.Configure jo tā izsauc šādu app.UseStaticFiles metodi, kas aprakstīta metodē:

public class Startup
{
  // 省略

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

    app.UseStaticFiles();

    // 省略
  }
}

Fiziskās mapes "wwwroot" ceļš vietrādī URL ir "https://<host name>/". Piemēram, failu wwwroot\image\sample.png var atrast vietrādī URL zem https://<host name>/image.png and; sample.]

Uz failiem, kas novietoti ārpus mapes wwwroot, būtībā nav atsauces no vietrāža URL tīmeklī.

Kā novietot statiskos failus papildus wwwroot mapei un mainīt atsauces ceļu vietrādī URL

Mapes konfigurācija

Šoreiz es vēlos atstāt mapes wwwroot funkciju, bet arī ievietot attēla failu atsevišķā mapē, lai uz to varētu atsaukties tīmeklī.

Projekta mapju konfigurācijai jābūt šādai, lai katras vietnes mapē Apgabali varētu redzēt attēlu failus.

Šādā stāvoklī vietrādis URL .png failu paraugā1.png

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

Un

  • https://<Resursdatora nosaukums>/vietne1/saturs/attēls/paraugs1.png

var šķist, ka tā būtu, bet šeit

  • https://<Resursdatora nosaukums>/vietne1/attēls/paraugs1.png

, uz kuru ir jāatsauču .

Starp citu, ja novietosiet statisku failu papildus mapei wwwroot, iespējams, trūkst faila izveides darbības. Ja turpināsit publicēt, fails netiks ievietots, tāpēc noteikti iestatiet to atpakaļ uz saturu.

Programmas pievienošana

Lai statiskos failus padarītu Startup.Configure pieejamus mapēs, kas nav wwwroot, app.UseStaticFiles izsauciet papildu metodes šādās metodēs:

// 追加
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 Metodes izsaukšana bez argumentiem iespējo mapi wwwroot. Papildu iestatījumus var StaticFileOptions pievienot, pārejot pie pirmā argumenta.

StaticFileOptions.FileProvider Norāda fizisko PhysicalFileProvider mapi, uz kuru rekvizītam ir jāatsaucas kā uz statisku failu, nododot sistēmas instanci. Fails zem šeit norādītā ceļa ir fails, uz kuru var atsaukties tīmeklī. Tā var būt RequestPath arī šādu rekvizītu URL sakne:

env.ContentRootPath Rekvizītā ir Web programmas saknes ceļš (fiziskais ceļš). Ieteicams to apvienot ar relatīvo ceļu uz mērķa mapi.

StaticFileOptions.RequestPath Rekvizīts apraksta vietrāža URL saknes ceļu, kas atsaucas uz statisko failu. Noklusējuma wwwroot https://<ホスト名> pamatā ir . Tāpat kā RequestPath = "/Site1" iepriekš minētajā kodā, ja rakstāt https://<ホスト名>/Site1 ir sakne. Tas Areas/Site1/Content/xxxx saista fizisko ceļu ar https://<ホスト名>/Site1/xxxx URL.

Piemēram.png piemēram, Areas/Site1/Content/image/sample.png izmantojot paraugu1, ceļā https://<ホスト名>/Site1/image/sample.png var atsaukties uz failu.

Pārbaudīt operāciju

index.html Novietojiet img tagu, lai varētu redzēt attēlu šādi: Ceļš arī atsaucas uz site1 un site2 attēliem, kā definēts.

<!-- 省略 -->

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

Ja jūs to vadāt un redzat attēlu, tas ir veiksmīgs.