מיקום קבצים סטטיים בתיקיות שאינן 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. לדוגמה, ניתן למצוא את הקובץ.png בכתובת ה- URL תחת https://<host name>/image.png ודוגמה.]
קבצים הממוקמים מחוץ לתיקיה wwwroot אינם מוזכרים למעשה מכתובת URL באינטרנט.
כיצד למקם קבצים סטטיים בנוסף לתיקיה wwwroot ולשנות את נתיב ההפניה בכתובת ה- URL
תצורת תיקיה
הפעם, ברצוני להשאיר את הפונקציה של התיקיה wwwroot, אך גם למקם את קובץ התמונה בתיקיה נפרדת כך שניתן יהיה להפנות אליו באינטרנט.
תצורת התיקיה של הפרוייקט צריכה להיות כדלקמן, כך שתוכל לראות את קבצי התמונה בתיקיה תוכן של כל אתר באזורים.
במצב זה, כתובת ה- URL .png את הקובץ בדוגמה1.png
- https://<hostname>/זירות/site1/תוכן/תמונה/דוגמה1.png
ו
- https://<שם מחשב מארח>/site1/תוכן/תמונה/דוגמה1.png
זה אולי נראה כמו שזה יהיה, אבל כאן
- https://<שם מחשב מארח>/site1/תמונה/דוגמה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
התיקיה הפיזית שאליה ברצונך שהמאפיין יפנה כקובץ סטטי בעת העברת מופע של .
הקובץ תחת הנתיב שצוין כאן הוא קובץ שניתן להפנות אליו באינטרנט.
הוא יכול גם להיות RequestPath
הבסיס של כתובת ה- URL עבור המאפיינים הבאים:
env.ContentRootPath
המאפיין מכיל את נתיב הבסיס (נתיב פיזי) של תוכנית האינטרנט.
מומלץ לשלב זאת עם הנתיב היחסי לתיקיית היעד.
StaticFileOptions.RequestPath
המאפיין מתאר את נתיב הבסיס של כתובת ה- URL המפנה לקובץ הסטטי.
ברירת המחדל https://<ホスト名>
wwwroot מבוססת על .
כמו 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 כך שתוכל לראות את התמונה באופן הבא:
הנתיב מפנה גם לתמונות 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" />
<!-- ここまで追加 -->
אם אתה מפעיל אותו ורואה את התמונה, זו הצלחה.