Acceso a carpetas compartidas en otros servidores desde aplicaciones ASP.NET Core (IIS, configuración del grupo de aplicaciones)

Actualización de la página :
Fecha de creación de la página :

Entorno de verificación de la operación

Visual Studio
  • Visual Studio 2022
ASP.NET Núcleo
  • 6 (Páginas Razpr)
Servidor de Windows
  • 2022 (ASP.NET requisitos básicos del sistema)
  • 2019 (servidor de implementación de carpetas compartidas)
IIS
  • 10.0

Entorno operativo

No lo he probado en todo, pero debería funcionar en su mayor parte.

Visual Studio
  • Cualquier cosa que pueda desarrollar un proyecto ASP.NET o ASP.NET Core
ASP.NET Núcleo
  • Cualquier versión (MVC, Razor Pages, API)
ASP.NET
  • Cualquier versión es aceptable
Servidor de Windows
  • Windows Server 2008 o posterior
IIS
  • 7.0 o posterior

precondición

  • ASP.NET aplicaciones principales están pensadas para ejecutarse en IIS. Otros servidores web no podrán implementar el contenido de estos consejos

medio ambiente

Se verifica en el siguiente entorno.

Finalidad de uso de los ordenadores y servidores
Windows 11 (local) Un entorno para el desarrollo de programas. Irrelevante para el propósito de este artículo
Prueba SV2022 Un entorno que ejecuta IIS y ASP.NET Core. Acceda a la carpeta compartida SV2019Test desde aquí
SV2019Prueba Servidores con carpetas compartidas

Además, los distintos ajustes son los siguientes.

parámetro
Valor del nombre del
Acceder al nombre de usuario SharedUser
Nombre de la carpeta compartida SharedFolder

Crear un programa para leer y escribir archivos desde una carpeta compartida desde una aplicación ASP.NET Core

Como tirón de Sr./Sra., simplemente haga clic en el botón,

  • Cargue archivos en una carpeta compartida y muéstrelos en la pantalla
  • Escribir un nuevo archivo en una carpeta compartida

proceso.

Todavía no he creado una carpeta compartida, por lo que no puedo depurarla, pero es un código simple, así que solo haré un programa por el momento.

ASP.NET proyecto principal puede ser de cualquier tipo, pero en este caso, estoy usando Razor Pages.

Index.cshtml.cs y agregue lo que sucede cuando se hace clic en el botón. El nombre del servidor se escribe directamente, pero ajústelo bien en la operación real. En algunos casos, es posible que no se pueda acceder a la carpeta compartida, por lo que se incluye en un 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 tiene un botón y un mensaje.

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

Una vez que haya creado el programa, cree un archivo para implementarlo en el servidor. En este caso, usaremos el método de colocar el archivo publicado directamente, pero no importa qué método utilice. Además, la disposición del programa no es la esencia de este consejo, por lo que se enumera de manera simplificada.

Agregue una configuración de publicación.

Cambie la configuración.

La configuración se cambia como se muestra en la figura. Esto tampoco está particularmente relacionado con el propósito de este tiempo, así que configúrelo de acuerdo con su entorno.

Publique el programa.

Después de publicar el programa, haga clic en el enlace "Ubicación de destino" y se abrirá la carpeta con los archivos que desea colocar.

Creación de un servidor de carpetas compartidas

Crear un usuario

Normalmente, si el servidor es diferente, el usuario creado en cada servidor se trata internamente como un usuario completamente diferente. Al crear un archivo con el mismo nombre de usuario y contraseña, puede omitir la autenticación de Windows en otro servidor. Esta vez usaremos esto para acceder a la carpeta compartida en otro servidor.

Por cierto, si se trata de servidores y cuentas en un dominio como Active Directory, puede configurar ambos servidores con esa cuenta, lo que simplifica la configuración hasta cierto punto.

El procedimiento para crear un usuario no se describe en detalle.

SharedUser En este caso, lo crearemos con el nombre . Dado que este usuario no opera la pantalla ni cambia la configuración, la contraseña no se puede cambiar.

Si deja el valor predeterminado, puede iniciar sesión con este usuario con Escritorio remoto, etc., así que elimínelo del grupo Users .

Creación de una carpeta compartida

No importa dónde lo crees. Esto se debe a que a otros servidores no les importa la ubicación de la carpeta física. En este caso, crearemos una carpeta nombrada directamente debajo SharedFolder de la unidad C y la compartiremos.

Abra las propiedades y configure los ajustes de uso compartido.

El nombre de la carpeta compartida debe SharedFolder ser . Este nombre será visible para otros servidores. Agregue SharedUser los permisos.

Everyone Elimine el archivo .

Confirme con el permiso "Cambiar".

Dado que solo hemos agregado permisos a los que se puede acceder desde el exterior, lo configuraremos internamente SharedUser para que pueda operar en esta carpeta.

Confirme con el permiso "Cambiar".

Cree un archivo para comprobar la operación.

Está bien si puede acceder al Explorador desde \\<サーバー名>\ otra PC, iniciar sesiónSharedUser con y ver el archivo.

Creación de un servidor de aplicaciones

Instalación de IIS

Por el momento, instálelo por defecto desde el administrador del servidor. No voy a entrar en los detalles del procedimiento.

No se requieren funciones adicionales.

En este momento, no se requieren servicios adicionales de IIS.

Instalación del paquete de alojamiento de tiempo de ejecución ASP.NET Core

Dado que estamos usando ASP.NET Core 6, necesitamos instalar el tiempo de ejecución en consecuencia. Descárgalo desde la siguiente URL:

Para ejecutar ASP.NET núcleo en IIS, necesita algo llamado "Paquete de alojamiento". Descargue el "Paquete de alojamiento" de ASP.NET Core Runtime.

Una vez descargado, ejecútelo en el servidor.

Siga las instrucciones del asistente para instalarlo.

Creación e implementación de aplicaciones web

En Herramientas administrativas de Windows, abra el Administrador de Internet Information Services (IIS).

Puede usar "Sitio web predeterminado" tal como está, pero esta vez crearemos un nuevo sitio. El sitio web predeterminado se inicia automáticamente, así que deténgalo.

Cree un nuevo sitio web.

Esta vez, el nombre del sitio es SharedFolderAccess , pero no importa.

El grupo de aplicaciones se genera automáticamente para el nuevo sitio.

Cree y especifique una carpeta de su elección donde desee colocar el programa.

El puerto 80 está etiquetado como "Sitio web predeterminado" y verá una advertencia, pero puede ignorarlo si ya está inactivo.

Ha sido creado.

Abra la carpeta especificada en el sitio web en el Explorador de Windows y copie y coloque todos los programas publicados tal como están.

Abra la página desde el vínculo IIS y vea si aparece la pantalla. Primero puede abrir un navegador web e ingresar la URL directamente.

Por cierto, incluso si hace clic en el botón en este estado, obtendrá un error porque la configuración de permisos aún no se ha completado.

Crear un usuario

Cree el mismo usuario SharedUser en el servidor de aplicaciones que en el servidor de carpetas compartidas. Asegúrate de que tus contraseñas también coincidan. Los pasos son exactamente los mismos.

Cambio de los permisos del grupo de aplicaciones

El acceso de los programas web viene determinado por el grupo de aplicaciones. De forma predeterminada, solo ApplicationPoolIdentity tiene los privilegios para ejecutar aplicaciones web.

Al cambiar este privilegio a SharedUser , el programa web puede funcionar con los privilegios del usuario que ha establecido. Esto permite que los programas SharedUser web accedan a carpetas compartidas en archivos .

Al abrir el Administrador de IIS, seleccione Grupos de aplicaciones.

Se agrega SharedFolderAccess automáticamente cuando crea un sitio web, así que haga clic derecho sobre él y seleccione "Avanzado".

Hay un "ID" en el modelo de proceso, así que haga clic en el botón de la derecha.

Seleccione "Cuenta personalizada" y haga clic en el botón "Configuración".

SharedUser Ingrese y confirme su nombre de usuario y contraseña.

Confirmación de funcionamiento

Vaya a la página web y haga clic en el botón. Si se muestra el contenido del archivo de texto, se ha realizado correctamente.

Asegúrese de que también tiene un nuevo archivo en la carpeta compartida.