وضع ملفات ثابتة في مجلدات أخرى غير 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://<host name>/" في عنوان URL. على سبيل المثال، يمكن العثور على الملف في wwwroot\image\sample.png في عنوان URL أسفل https://<اسم المضيف>/الصورة.png وعينة.]
الملفات الموضوعة خارج المجلد wwwroot أساسا لا تتم الإشارة إليها من URL على ويب.
كيفية وضع ملفات ثابتة بالإضافة إلى المجلد wwwroot وتغيير مسار المرجع في URL
تكوين المجلد
هذه المرة ، أريد أن أترك وظيفة المجلد wwwroot ، ولكن أيضا وضع ملف الصورة في مجلد منفصل بحيث يمكن الرجوع إليها على شبكة الإنترنت.
يجب أن يكون تكوين المجلد للمشروع كما يلي، بحيث يمكنك مشاهدة ملفات الصور في مجلد المحتوى لكل موقع في المناطق.
في هذه الحالة، url .png الملف في sample1.png
- https://<اسم المضيف>/arenas/site1/content/image/sample1.png
و
- https://<اسم المضيف>/site1/content/image/sample1.png
قد يبدو وكأنه سيكون، ولكن هنا
- https://<اسم المضيف>/site1/image/sample1.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 الذي يشير إلى الملف الثابت.
يستند wwwroot الافتراضي https://<ホスト名>
على .
كما هو الحال في RequestPath = "/Site1"
التعليمات البرمجية أعلاه، إذا قمت بالكتابة
https://<ホスト名>/Site1
هو الجذر.
Areas/Site1/Content/xxxx
وهذا يربط المسار الفعلي مع https://<ホスト名>/Site1/xxxx
URL.
باستخدام sample1.png كمثال، يمكن Areas/Site1/Content/image/sample.png
الرجوع إلى الملف https://<ホスト名>/Site1/image/sample.png
في المسار.
التحقق من العملية
index.html
ضع علامة img بحيث يمكنك رؤية الصورة على النحو التالي:
يشير المسار أيضا إلى صور الموقع1 و 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" />
<!-- ここまで追加 -->
إذا قمت بتشغيله ورؤية الصورة، انها ناجحة.