การเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันบนเซิร์ฟเวอร์อื่นจากแอปพลิเคชัน ASP.NET Core (IIS, การตั้งค่าพูลแอปพลิเคชัน)

ปรับปรุงหน้า :
วันที่สร้างเพจ :

สภาพแวดล้อมการตรวจสอบการทํางาน

วิชวลสตูดิโอ
  • วิชวลสตูดิโอ 2022
แกน ASP.NET
  • 6 (หน้า Razpr)
เซิร์ฟเวอร์ Windows
  • 2022 (ASP.NET ความต้องการของระบบหลัก)
  • 2019 (เซิร์ฟเวอร์การปรับใช้โฟลเดอร์ที่ใช้ร่วมกัน)
ไอเอส
  • 10.0

สภาพแวดล้อมในการทํางาน

ฉันไม่ได้ทดสอบทุกอย่าง แต่ควรใช้งานได้เป็นส่วนใหญ่

วิชวลสตูดิโอ
  • อะไรก็ตามที่สามารถพัฒนาโครงการ ASP.NET หรือ ASP.NET Core
แกน ASP.NET
  • เวอร์ชันใดก็ได้ (MVC, Razor Pages, API)
ASP.NET
  • รุ่นใด ๆ เป็นที่ยอมรับ
เซิร์ฟเวอร์ Windows
  • Windows Server 2008 หรือใหม่กว่า
ไอเอส
  • 7.0 หรือใหม่กว่า

เงื่อนไขเบื้องต้น

  • แอปพลิเคชัน ASP.NET Core มีวัตถุประสงค์เพื่อทํางานบน IIS เว็บเซิร์ฟเวอร์อื่นจะไม่สามารถใช้เนื้อหาของเคล็ดลับเหล่านี้ได้

สิ่งแวดล้อม

มีการตรวจสอบในสภาพแวดล้อมต่อไปนี้

วัตถุประสงค์ในการใช้พีซีและเซิร์ฟเวอร์
Windows 11 (ในเครื่อง) สภาพแวดล้อมสําหรับการพัฒนาโปรแกรม ไม่เกี่ยวข้องกับวัตถุประสงค์ของบทความนี้
SV2022 ทดสอบ สภาพแวดล้อมที่เรียกใช้ IIS และ ASP.NET Core เข้าถึงโฟลเดอร์ที่ใช้ร่วมกัน SV2019Test จากที่นี่
SV2019 ทดสอบ เซิร์ฟเวอร์ที่มีโฟลเดอร์ที่ใช้ร่วมกัน

นอกจากนี้การตั้งค่าต่างๆมีดังนี้

ค่าชื่อพารามิเตอร์
เข้าถึงชื่อผู้ใช้ แชร์โฮสติ้ง User
ชื่อโฟลเดอร์ที่ใช้ร่วมกัน แชร์โฮสติ้ง Folder

สร้างโปรแกรมเพื่ออ่านและเขียนไฟล์จากโฟลเดอร์ที่ใช้ร่วมกันจากแอปพลิเคชัน ASP.NET Core

ในฐานะ Mr./Ms. ดึง เพียงคลิกปุ่ม

  • โหลดไฟล์ในโฟลเดอร์ที่ใช้ร่วมกันและแสดงบนหน้าจอ
  • เขียนไฟล์ใหม่ไปยังโฟลเดอร์ที่แชร์

แปรรูป

ฉันยังไม่ได้สร้างโฟลเดอร์ที่ใช้ร่วมกัน ดังนั้นฉันจึงไม่สามารถดีบักได้ แต่เป็นโค้ดง่ายๆ ดังนั้นฉันจะสร้างโปรแกรมในขณะนี้

โปรเจ็กต์ ASP.NET Core สามารถเป็นประเภทใดก็ได้ แต่ในกรณีนี้ ฉันใช้ Razor Pages

Index.cshtml.cs และเพิ่มสิ่งที่จะเกิดขึ้นเมื่อคลิกปุ่ม ชื่อเซิร์ฟเวอร์เขียนโดยตรง แต่โปรดปรับให้ดีในการใช้งานจริง ในบางกรณี โฟลเดอร์ที่ใช้ร่วมกันอาจไม่สามารถเข้าถึงได้ ดังนั้นจึงอยู่ในการลองจับ

public class IndexModel : PageModel
{
  // 省略

  public void OnGet() { }

  // ここから追加
  public void OnPost()
  {
    var serverName = "SV2019Test";
    try
    {
      var readFilePath = $@"\\{serverName}\SharedFolder\Input.txt";
      var writeFilePath = $@"\\{serverName}\SharedFolder\Output.txt";

      // 共有フォルダからファイルを読み込む
      var text = System.IO.File.ReadAllText(readFilePath);

      // 別ファイルとして共有フォルダに書き込む
      System.IO.File.WriteAllText(writeFilePath, text);

      // 読み込んだ内容を画面に表示する
      ViewData["Message"] = text;
    }
    catch (Exception ex)
    {
      ViewData["Message"] = ex;
    }
  }
  // ここまで追加
}

Index.cshtml มีปุ่มและข้อความ

@page
@model IndexModel
@{
    ViewData["Title"] = "Home page";
}

<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>

@* ここから追加 *@
<form method="post">
  <button type="submit">処理実行</button>
</form>
<div>@ViewData["Message"]</div>
@* ここまで追加 *@

เมื่อคุณสร้างโปรแกรมแล้ว ให้สร้างไฟล์เพื่อปรับใช้กับเซิร์ฟเวอร์ ในกรณีนี้เราจะใช้วิธีการวางไฟล์ที่เผยแพร่โดยตรง แต่ไม่สําคัญว่าคุณจะใช้วิธีใด นอกจากนี้การจัดเรียงของโปรแกรมไม่ใช่สาระสําคัญของเคล็ดลับนี้ดังนั้นจึงมีการระบุไว้ในลักษณะที่เรียบง่าย

เพิ่มการกําหนดค่าการเผยแพร่

เปลี่ยนการตั้งค่า

การตั้งค่ามีการเปลี่ยนแปลงดังแสดงในรูป สิ่งนี้ไม่เกี่ยวข้องกับวัตถุประสงค์ของเวลานี้โดยเฉพาะดังนั้นโปรดตั้งค่าตามสภาพแวดล้อมของคุณ

เผยแพร่โปรแกรม

หลังจากเผยแพร่โปรแกรมแล้ว ให้คลิกที่ลิงก์ "ตําแหน่งเป้าหมาย" และโฟลเดอร์ที่มีไฟล์ที่คุณต้องการวางจะเปิดขึ้น

การสร้างเซิร์ฟเวอร์โฟลเดอร์ที่ใช้ร่วมกัน

สร้างผู้ใช้

โดยปกติหากเซิร์ฟเวอร์แตกต่างกันผู้ใช้ที่สร้างขึ้นในแต่ละเซิร์ฟเวอร์จะได้รับการปฏิบัติภายในในฐานะผู้ใช้ที่แตกต่างกันโดยสิ้นเชิง ด้วยการสร้างไฟล์ที่มีชื่อผู้ใช้และรหัสผ่านเดียวกันคุณสามารถข้ามการรับรองความถูกต้องของ Windows ไปยังเซิร์ฟเวอร์อื่นได้ คราวนี้เราจะใช้สิ่งนี้เพื่อเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันบนเซิร์ฟเวอร์อื่น

อย่างไรก็ตามหากคุณกําลังจัดการกับเซิร์ฟเวอร์และบัญชีในโดเมนเช่น Active Directory คุณสามารถตั้งค่าเซิร์ฟเวอร์ทั้งสองด้วยบัญชีนั้นซึ่งช่วยลดความยุ่งยากในการกําหนดค่าในระดับหนึ่ง

ขั้นตอนการสร้างผู้ใช้ไม่ได้อธิบายโดยละเอียด

SharedUserในกรณีนี้เราจะสร้างด้วยชื่อ . เนื่องจากผู้ใช้รายนี้ไม่ได้ใช้งานหน้าจอหรือเปลี่ยนการตั้งค่า จึงไม่สามารถเปลี่ยนรหัสผ่านได้

หากคุณปล่อยให้เป็นค่าเริ่มต้นคุณสามารถเข้าสู่ระบบด้วยผู้ใช้รายนี้ด้วย Remote Desktop ฯลฯ ดังนั้นโปรดลบออกจากกลุ่มUsers

การสร้างโฟลเดอร์ที่ใช้ร่วมกัน

ไม่สําคัญว่าคุณจะสร้างมันขึ้นมาที่ไหน นี่เป็นเพราะเซิร์ฟเวอร์อื่นไม่สนใจตําแหน่งของโฟลเดอร์จริง ในกรณีนี้เราจะสร้างโฟลเดอร์ที่มีชื่อโดยตรงภายใต้ SharedFolder ไดรฟ์ C และแบ่งปัน

เปิดคุณสมบัติและกําหนดการตั้งค่าการแชร์

ชื่อของโฟลเดอร์ที่แชร์ควรเป็น SharedFolder ชื่อนี้จะปรากฏแก่เซิร์ฟเวอร์อื่น เพิ่ม SharedUser สิทธิ์

Everyoneลบที่มีอยู่

ยืนยันด้วยสิทธิ์ "เปลี่ยน"

เนื่องจากเราได้เพิ่มการอนุญาตที่สามารถเข้าถึงได้จากภายนอกเท่านั้นเราจะตั้งค่าภายใน SharedUser เพื่อให้สามารถทํางานในโฟลเดอร์นี้ได้

ยืนยันด้วยสิทธิ์ "เปลี่ยน"

สร้างไฟล์เพื่อตรวจสอบการทํางาน

ไม่เป็นไรหากคุณสามารถเข้าถึงได้ใน Explorer จาก \\<サーバー名>\ พีซีเครื่องอื่น เข้าสู่ระบบSharedUser ด้วย และดูไฟล์

การสร้างเซิร์ฟเวอร์แอปพลิเคชัน

การติดตั้ง IIS

ในขณะนี้ ให้ติดตั้งตามค่าเริ่มต้นจากตัวจัดการเซิร์ฟเวอร์ ฉันจะไม่ลงรายละเอียดของขั้นตอน

ไม่จําเป็นต้องมีคุณสมบัติเพิ่มเติม

ไม่จําเป็นต้องใช้บริการ IIS เพิ่มเติมในขณะนี้

การติดตั้ง ASP.NET Core Runtime Hosting Bundle

เนื่องจากเราใช้ ASP.NET Core 6 เราจึงจําเป็นต้องติดตั้งรันไทม์ตามนั้น ดาวน์โหลดได้จาก URL ต่อไปนี้:

ในการเรียกใช้ ASP.NET Core ใน IIS คุณต้องมีสิ่งที่เรียกว่า "Hosting Bundle" ดาวน์โหลด "Hosting Bundle" จาก ASP.NET Core Runtime

เมื่อดาวน์โหลดแล้วให้เรียกใช้บนเซิร์ฟเวอร์

ทําตามวิซาร์ดเพื่อติดตั้ง

การสร้างและการปรับใช้เว็บแอปพลิเคชัน

จาก Windows Administrative Tools ให้เปิด Internet Information Services (IIS) Manager

คุณสามารถใช้ "เว็บไซต์เริ่มต้น" ตามที่เป็นอยู่ แต่คราวนี้เราจะสร้างเว็บไซต์ใหม่ เว็บไซต์เริ่มต้นจะเริ่มต้นโดยอัตโนมัติ ดังนั้นโปรดหยุดมัน

สร้างเว็บไซต์ใหม่

คราวนี้ชื่อไซต์คือ SharedFolderAccess แต่ไม่เป็นไร

พูลแอปพลิเคชันถูกสร้างขึ้นโดยอัตโนมัติสําหรับไซต์ใหม่

สร้างและระบุโฟลเดอร์ที่คุณเลือกที่คุณต้องการวางโปรแกรม

พอร์ต 80 มีป้ายกํากับว่า "เว็บไซต์เริ่มต้น" และคุณจะเห็นคําเตือน แต่คุณสามารถเพิกเฉยได้หากหยุดทํางานแล้ว

มันถูกสร้างขึ้น

เปิดโฟลเดอร์ที่ระบุในเว็บไซต์ใน Windows Explorer และคัดลอกและวางโปรแกรมที่เผยแพร่ทั้งหมดตามที่เป็นอยู่

เปิดหน้าจากการเชื่อมโยง IIS และดูว่าหน้าจอปรากฏขึ้นหรือไม่ คุณสามารถเปิดเว็บเบราว์เซอร์ก่อนและป้อน URL โดยตรง

อย่างไรก็ตาม แม้ว่าคุณจะคลิกปุ่มในสถานะนี้ คุณจะได้รับข้อผิดพลาดเนื่องจากการตั้งค่าการอนุญาตยังไม่เสร็จสมบูรณ์

สร้างผู้ใช้

สร้างผู้ใช้ SharedUser เดียวกันบนเซิร์ฟเวอร์โปรแกรมประยุกต์เช่นเดียวกับบนเซิร์ฟเวอร์โฟลเดอร์ที่ใช้ร่วมกัน ตรวจสอบให้แน่ใจว่ารหัสผ่านของคุณตรงกันเช่นกัน ขั้นตอนเหมือนกันทุกประการ

การเปลี่ยนสิทธิ์พูลแอปพลิเคชัน

การเข้าถึงโดยโปรแกรมเว็บจะถูกกําหนดโดยกลุ่มแอปพลิเคชัน โดยค่าเริ่มต้นจะมีสิทธิ์เรียกใช้เว็บแอปพลิเคชันเท่านั้นApplicationPoolIdentity

โดยการเปลี่ยนสิทธิ์ SharedUser นี้เป็น โปรแกรมเว็บสามารถทํางานด้วยสิทธิ์ของผู้ใช้ที่คุณตั้งไว้ สิ่งนี้ทําให้โปรแกรม SharedUser เว็บสามารถเข้าถึงโฟลเดอร์ที่ใช้ร่วมกันใน.

เมื่อคุณเปิดตัวจัดการ IIS เลือกพูลโปรแกรมประยุกต์

มีการเพิ่ม SharedFolderAccess โดยอัตโนมัติเมื่อคุณสร้างเว็บไซต์ดังนั้นคลิกขวาที่เว็บไซต์แล้วเลือก "ขั้นสูง"

มี "ID" ในรูปแบบกระบวนการ ดังนั้นให้คลิกปุ่มทางด้านขวา

เลือก "บัญชีที่กําหนดเอง" และคลิกปุ่ม "การตั้งค่า"

SharedUser ป้อนและยืนยันชื่อผู้ใช้และรหัสผ่านของคุณ

การยืนยันการดําเนินการ

ไปที่หน้าเว็บและคลิกที่ปุ่ม หากเนื้อหาของไฟล์ข้อความปรากฏขึ้นแสดงว่าสําเร็จ

ตรวจสอบให้แน่ใจว่าคุณมีไฟล์ใหม่ในโฟลเดอร์ที่แชร์ด้วย