Доступ до спільних папок на інших серверах з додатків ASP.NET Core (IIS, налаштування пулу додатків)

Сторінка оновлюється :
Дата створення сторінки :

Середовище перевірки роботи

Візуальна студія
  • Visual Studio 2022
ASP.NET Ядро
  • 6 (Разпр сторінок)
Windows Server
  • 2022 (ASP.NET основні системні вимоги)
  • 2019 (сервер розгортання спільних папок)
ІВС
  • 10.0

Робоче середовище

Я не тестував його у всьому, але здебільшого він має працювати.

Візуальна студія
  • Все, що може розвинути ASP.NET або ASP.NET Core проект
ASP.NET Ядро
  • Будь-яка версія (MVC, Razor Pages, API)
ASP.NET
  • Прийнятна будь-яка версія
Windows Server
  • Windows Server 2008 або пізнішої версії
ІВС
  • 7.0 або новішої версії

Передумовою

  • ASP.NET Основні програми призначені для роботи на IIS. Інші веб-сервери не зможуть реалізувати зміст цих порад

середовище

Це перевіряється в наступному середовищі.

Мета використання ПК і серверів
Windows 11 (локальна) Середовище для розробки програм. Не має відношення до мети цієї статті
SV2022Тест Середовище, в якому працює IIS і ASP.NET Core. Доступ до спільної папки SV2019Test можна отримати звідси
SV2019Тест Сервери зі спільними папками

Крім того, різні налаштування такі.

Значення назви параметра
Ім'я користувача Access SharedUser
Ім'я спільної папки Спільна папка

Створення програми для читання та запису файлів зі спільної папки програми ASP.NET Core

Як Містер / Пані потягне, просто натисніть кнопку,

  • Завантаження файлів у спільну папку та відображення їх на екрані
  • Запис нового файлу до спільної папки

процес.

Я ще не створив загальну папку, тому не можу її налагодити, але це простий код, тому я поки що просто зроблю програму.

ASP.NET Основний проект може бути будь-якого типу, але в даному випадку я використовую 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 У цьому випадку ми створимо його з ім'ям . Оскільки цей користувач не керує екраном і не змінює налаштування, пароль змінити не можна.

Якщо ви залишите значення за замовчуванням, ви зможете увійти до системи за допомогою цього користувача за допомогою віддаленого робочого столу тощо, тому, будь ласка, видаліть його з групи Users .

Створення спільної папки

Не має значення, де ви його створюєте. Це пов'язано з тим, що інші сервери не дбають про розташування фізичної папки. У цьому випадку ми створимо папку з ім'ям безпосередньо під SharedFolder диском C і поділимося нею.

Відкрийте властивості та налаштуйте параметри спільного доступу.

Ім'я спільної папки має SharedFolder бути . Це ім'я буде видно іншим серверам. Додайте SharedUser дозволи.

Everyone Видаліть існуючі .

Підтвердьте за допомогою дозволу «Змінити».

Оскільки ми додали лише права доступу, доступ до яких можна отримати ззовні, ми встановимо їх на внутрішньому SharedUser рівні, щоб вони могли працювати в цій папці.

Підтвердьте за допомогою дозволу «Змінити».

Створіть файл для перевірки операції.

Це нормально, якщо ви можете отримати доступ до Провідника з \\<サーバー名>\ іншого комп'ютера, увійтиSharedUser за допомогою та переглянути файл.

Побудова сервера додатків

Інсталяція IIS

На даний момент встановіть його за замовчуванням з диспетчера серверів. Не буду вдаватися в подробиці процедури.

Ніяких додаткових функцій не потрібно.

Наразі додаткові служби IIS не потрібні.

ASP.NET Встановлення пакета хостингу Core Runtime

Оскільки ми використовуємо ASP.NET Core 6, нам потрібно відповідно встановити середовище виконання. Завантажте його за такою URL-адресою:

Для того, щоб запустити ASP.NET Core в IIS, вам потрібно щось під назвою "Hosting Bundle". Завантажте "Hosting Bundle" з ASP.NET Core Runtime.

Після завантаження запустіть його на сервері.

Дотримуйтесь інструкцій майстра, щоб встановити його.

Створення та розгортання веб-додатків

У засобі адміністрування Windows відкрийте диспетчер інформаційних служб Інтернету (IIS).

Ви можете використовувати "Веб-сайт за замовчуванням" як є, але цього разу ми створимо новий сайт. Веб-сайт за замовчуванням запускається автоматично, тому, будь ласка, зупиніть його.

Створіть новий веб-сайт.

Цього разу назва сайту , SharedFolderAccess але це не має значення.

Пул додатків генерується автоматично для нового сайту.

Створіть і вкажіть папку на ваш вибір, куди ви хочете розмістити програму.

Порт 80 позначено як "Типовий веб-сайт", і ви побачите попередження, але ви можете проігнорувати його, якщо він уже не працює.

Він був створений.

Відкрийте папку, зазначену на веб-сайті у провіднику Windows, і скопіюйте та розмістіть усі опубліковані програми без змін.

Відкрийте сторінку за посиланням IIS і подивіться, чи з'явиться екран. Ви можете спочатку відкрити веб-браузер і ввести URL-адресу безпосередньо.

До речі, навіть якщо ви натиснете кнопку в такому стані, то отримаєте помилку через те, що налаштування дозволів ще не завершено.

Створення користувача

Створіть на сервері додатків такого ж користувача SharedUser , як і на сервері спільних папок. Переконайтеся, що ваші паролі також збігаються. Кроки абсолютно однакові.

Зміна дозволів пулу програм

Доступ за веб-програмами визначається пулом додатків. За замовчуванням він має лише ApplicationPoolIdentity привілеї для запуску веб-додатків.

Змінивши цей привілей на SharedUser , веб-програма може працювати з привілеями встановленого користувача. Це дозволяє веб-програмам SharedUser отримувати доступ до спільних папок у форматі .

Відкривши диспетчер IIS, виберіть пункт Пули програм.

При створенні сайту автоматично додається SharedFolderAccess кнопка, тому клікніть по ній правою кнопкою миші і виберіть «Додатково».

У моделі процесу є «ID», тому натискаємо кнопку праворуч.

Виберіть «Користувацький обліковий запис» і натисніть кнопку «Налаштування».

SharedUser Введіть і підтвердьте логін і пароль.

Підтвердження роботи

Перейдіть на веб-сторінку та натисніть на кнопку. Якщо вміст текстового файлу відображено, він успішний.

Переконайтеся, що у вас також є новий файл у спільній папці.