Τοποθέτηση στατικών αρχείων σε φακέλους εκτός του 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://<όνομα κεντρικού υπολογιστή>/" στη διεύθυνση URL. Για παράδειγμα, το αρχείο στο wwwroot\image\sample.png μπορεί να βρεθεί στη διεύθυνση URL στην περιοχή https://<όνομα κεντρικού υπολογιστή>/εικόνα.png και δείγμα.]

Τα αρχεία που τοποθετούνται εκτός του φακέλου wwwroot ουσιαστικά δεν αναφέρονται από μια διεύθυνση URL στο Web.

Τρόπος τοποθέτησης στατικών αρχείων εκτός από το φάκελο wwwroot και αλλαγής της διαδρομής αναφοράς στη διεύθυνση URL

Ρύθμιση παραμέτρων φακέλου

Αυτή τη φορά, θέλω να αφήσω τη λειτουργία του φακέλου wwwroot, αλλά και να τοποθετήσω το αρχείο εικόνας σε ξεχωριστό φάκελο, ώστε να μπορεί να γίνει αναφορά στο Web.

Η ρύθμιση παραμέτρων φακέλου του έργου πρέπει να έχει ως εξής, ώστε να μπορείτε να δείτε τα αρχεία εικόνας στο φάκελο "Περιεχόμενο" κάθε τοποθεσίας στις "Περιοχές".

Σε αυτήν την κατάσταση, η διεύθυνση URL .png το αρχείο στο δείγμα1.png

  • https://<όνομα κεντρικού υπολογιστή>/αρένες/τοποθεσία1/περιεχόμενο/εικόνα/δείγμα1.png

Και

  • Https://<Όνομα κεντρικού υπολογιστή>/τοποθεσία1/περιεχόμενο/εικόνα/δείγμα1.png

μπορεί να φαίνεται σαν να είναι, αλλά εδώ

  • https://<Όνομα κεντρικού υπολογιστή>/τοποθεσία1/εικόνα/δείγμα1.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 φυσικό φάκελο στον οποίο θέλετε να αναφέρεται η ιδιότητα ως στατικό αρχείο κατά τη μεταβίβαση μιας παρουσίας του . Το αρχείο κάτω από τη διαδρομή που καθορίζεται εδώ είναι ένα αρχείο στο οποίο μπορείτε να γίνετε αναφορά στο Web. Μπορεί επίσης να είναι η RequestPath ρίζα της διεύθυνσης URL για τις ακόλουθες ιδιότητες:

env.ContentRootPath Η ιδιότητα περιέχει τη διαδρομή ρίζας (φυσική διαδρομή) του προγράμματος Web. Είναι καλή ιδέα να το συνδυάσετε με τη σχετική διαδρομή προς το φάκελο προορισμού.

StaticFileOptions.RequestPath Η ιδιότητα περιγράφει τη διαδρομή ρίζας της διεύθυνσης URL που αναφέρεται στο στατικό αρχείο. Το προεπιλεγμένο wwwroot https://<ホスト名> βασίζεται στο . Όπως στον RequestPath = "/Site1" παραπάνω κώδικα, αν γράψετε https://<ホスト名>/Site1 είναι η ρίζα. Αυτό Areas/Site1/Content/xxxx συνδέει τη φυσική διαδρομή με τη διεύθυνση https://<ホスト名>/Site1/xxxx URL.

Χρησιμοποιώντας το δείγμα1.png ως παράδειγμα, Areas/Site1/Content/image/sample.png το αρχείο μπορεί να https://<ホスト名>/Site1/image/sample.png αναφέρεται στη διαδρομή.

Λειτουργία ελέγχου

index.html Τοποθετήστε την ετικέτα img έτσι ώστε να μπορείτε να δείτε την εικόνα ως εξής: Η διαδρομή αναφέρεται επίσης σε εικόνες τοποθεσίας1 και τοποθεσίας2, όπως ορίζεται.

<!-- 省略 -->

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

Αν το τρέξεις και δεις την εικόνα, είναι επιτυχία.