Доступ к общим папкам на других серверах из приложений ASP.NET Core (IIS, параметры пула приложений)

Страница обновлена :
Дата создания страницы :

Среда проверки работы

Визуальная студия
  • Visual Studio 2022
ASP.NET Ядро
  • 6 (Razpr Pages)
Сервер 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 Основные приложения предназначены для работы в IIS. Другие веб-серверы не смогут реализовать содержимое этих советов

окружающая среда

Он проверяется в следующей среде.

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

Кроме того, различные настройки следующие.

Значение имени параметра
Доступ к имени пользователя SharedUser (Общий пользователь)
Имя общей папки SharedFolder (Общая папка)

Создание программы для чтения и записи файлов из общей папки приложения ASP.NET Core

В качестве тяги мистер/мисс просто нажмите кнопку,

  • Загрузка файлов в общую папку и отображение их на экране
  • Запись нового файла в общую папку

процесс.

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

ASP.NET Основной проект может быть любого типа, но в данном случае я использую Razor Pages.

Index.cshtml.cs и добавьте, что происходит при нажатии кнопки. Имя сервера пишется напрямую, но, пожалуйста, хорошо скорректируйте его в реальной работе. В некоторых случаях общая папка может быть недоступна, поэтому она заключена в try-catch.

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>
@* ここまで追加 *@

После того, как вы создали программу, создайте файл для развертывания на сервере. В этом случае мы будем использовать метод размещения опубликованного файла напрямую, но не имеет значения, какой способ вы используете. Кроме того, устройство программы не является сутью этого совета, поэтому он перечислен в упрощенном виде.

Добавьте конфигурацию публикации.

Измените настройки.

Настройки изменяются, как показано на рисунке. Это также не имеет особого отношения к цели этого времени, поэтому, пожалуйста, установите его в соответствии с вашим окружением.

Опубликуйте программу.

После публикации программы нажмите на ссылку «Target Location» и откроется папка с файлами, которые вы хотите разместить.

Создание сервера общих папок

Создание пользователя

Обычно, если сервер отличается, пользователь, созданный на каждом сервере, внутренне рассматривается как совершенно другой пользователь. Создав файл с тем же именем пользователя и паролем, вы можете пропустить проверку подлинности 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 Введите и подтвердите свой логин и пароль.

Подтверждение операции

Перейдите на веб-страницу и нажмите на кнопку. Если содержимое текстового файла отображается, это успешно.

Убедитесь, что у вас также есть новый файл в общей папке.