Acessando pastas compartilhadas em outros servidores a partir de aplicativos ASP.NET Core (IIS, configurações do pool de aplicativos)

Página atualizada :
Data de criação de página :

Ambiente de verificação de operação

Estúdio Visual
  • Visual Studio 2022
ASP.NET Núcleo
  • 6 (Páginas Razpr)
Servidor Windows
  • 2022 (ASP.NET Core Requisitos do sistema)
  • 2019 (Servidor de Implantação de Pasta Compartilhada)
IIS
  • 10.0

Ambiente operacional

Eu não testei em tudo, mas deve funcionar na maior parte.

Estúdio Visual
  • Qualquer coisa que possa desenvolver um projeto ASP.NET ou ASP.NET Core
ASP.NET Núcleo
  • Qualquer versão (MVC, Razor Pages, API)
ASP.NET
  • Qualquer versão é aceitável
Servidor Windows
  • Windows Server 2008 ou posterior
IIS
  • 7.0 ou posterior

pré-condição

  • ASP.NET aplicativos principais devem ser executados no IIS. Outros servidores web não poderão implementar o conteúdo dessas dicas

ambiente

Ele é verificado no seguinte ambiente.

Finalidade de uso de PCs e servidores
Windows 11 (Local) Um ambiente para o desenvolvimento de programas. Irrelevante para o objetivo deste artigo
SV2022Teste Um ambiente que executa o IIS e o ASP.NET Core. Acesse a pasta compartilhada SV2019Test aqui
SV2019Teste Servidores com pastas compartilhadas

Além disso, as várias configurações são as seguintes.

Valor do nome do parâmetro
Nome de usuário do Access SharedUser
Nome da pasta compartilhada SharedFolder

Criar um programa para ler e gravar arquivos de uma pasta compartilhada de um aplicativo ASP.NET Core

Como um Mr./Ms. puxar, basta clicar no botão,

  • Carregar arquivos em uma pasta compartilhada e exibi-los na tela
  • Gravar um novo arquivo em uma pasta compartilhada

processo.

Eu ainda não criei uma pasta compartilhada, então não posso depurá-la, mas é um código simples, então vou apenas fazer um programa por enquanto.

ASP.NET projeto Core pode ser de qualquer tipo, mas neste caso, estou usando o Razor Pages.

Index.cshtml.cs e adicione o que acontece quando o botão é clicado. O nome do servidor é escrito diretamente, mas por favor, ajuste-o bem na operação real. Em alguns casos, a pasta compartilhada pode não estar acessível, portanto, ela é incluída em uma tentativa de captura.

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 tem um botão e uma mensagem.

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

Depois de criar o programa, crie um arquivo para implantar no servidor. Nesse caso, usaremos o método de colocar o arquivo publicado diretamente, mas não importa qual método você usa. Além disso, a disposição do programa não é a essência dessa dica, por isso ela é listada de forma simplificada.

Adicione uma configuração de publicação.

Altere as configurações.

As configurações são alteradas conforme mostrado na figura. Isso também não está particularmente relacionado ao propósito deste tempo, portanto, defina-o de acordo com o seu ambiente.

Publique o programa.

Depois de publicar o programa, clique no link "Local de destino" e a pasta com os arquivos que você deseja colocar será aberta.

Criando um servidor de pasta compartilhada

Criar um usuário

Normalmente, se o servidor for diferente, o usuário criado em cada servidor será tratado internamente como um usuário completamente diferente. Ao criar um arquivo com o mesmo nome de usuário e senha, você pode ignorar a autenticação do Windows para outro servidor. Desta vez, usaremos isso para acessar a pasta compartilhada em outro servidor.

A propósito, se você estiver lidando com servidores e contas em um domínio como o Active Directory, poderá configurar ambos os servidores com essa conta, o que simplifica a configuração até certo ponto.

O procedimento para criar um usuário não é descrito em detalhes.

SharedUser Neste caso, vamos criá-lo com o nome . Como esse usuário não opera a tela nem altera as configurações, a senha não pode ser alterada.

Se você deixar o padrão, você pode fazer login com este usuário com Área de Trabalho Remota, etc., então remova do grupo Users .

Criando uma pasta compartilhada

Não importa onde você o crie. Isso ocorre porque outros servidores não se importam com o local da pasta física. Neste caso, vamos criar uma pasta nomeada diretamente sob SharedFolder a unidade C e compartilhá-la.

Abra as propriedades e defina as configurações de compartilhamento.

O nome da pasta compartilhada deve SharedFolder ser . Esse nome ficará visível para outros servidores. Adicione SharedUser as permissões.

Everyone Exclua o arquivo .

Confirme com a permissão "Alterar".

Como só adicionamos permissões que podem ser acessadas de fora, vamos defini-lo internamente SharedUser para que possa operar nesta pasta.

Confirme com a permissão "Alterar".

Crie um arquivo para verificar a operação.

Tudo bem se você puder acessar no Explorer de \\<サーバー名>\ outro PC, fazer loginSharedUser com o e exibir o arquivo.

Criando um servidor de aplicativos

Instalando o IIS

Por enquanto, instale-o por padrão a partir do gerenciador do servidor. Não vou entrar em detalhes do procedimento.

Não são necessários recursos adicionais.

Nenhum serviço IIS adicional é necessário no momento.

Instalação do pacote de hospedagem do ASP.NET Core Runtime

Como estamos usando o ASP.NET Core 6, precisamos instalar o tempo de execução de acordo. Baixe-o a partir do seguinte URL:

Para executar ASP.NET Core no IIS, você precisa de algo chamado "Hosting Bundle". Baixe o "Hosting Bundle" do ASP.NET Core Runtime.

Uma vez baixado, execute-o no servidor.

Siga o assistente para instalá-lo.

Criando e implantando aplicativos Web

Nas Ferramentas Administrativas do Windows, abra o Gerenciador dos Serviços de Informações da Internet (IIS).

Você pode usar "Site padrão" como está, mas desta vez vamos criar um novo site. O Site Padrão é iniciado automaticamente, portanto, interrompa-o.

Crie um novo site.

Desta vez, o nome do site é SharedFolderAccess , mas não importa.

O pool de aplicativos é gerado automaticamente para o novo site.

Crie e especifique uma pasta de sua escolha onde você deseja colocar o programa.

A porta 80 é rotulada como "Site padrão" e você verá um aviso, mas poderá ignorá-lo se já estiver inativo.

Foi criado.

Abra a pasta especificada no site no Windows Explorer e copie e coloque todos os programas publicados como estão.

Abra a página a partir do link do IIS e veja se a tela aparece. Você pode abrir um navegador da Web primeiro e inserir a URL diretamente.

A propósito, mesmo se você clicar no botão neste estado, você receberá um erro porque a configuração de permissão ainda não foi concluída.

Criar um usuário

Crie o mesmo usuário SharedUser no servidor de aplicativos que no servidor de pasta compartilhada. Certifique-se de que suas senhas também correspondam. Os passos são exatamente os mesmos.

Alterando permissões do pool de aplicativos

O acesso por programas da Web é determinado pelo pool de aplicativos. Por padrão, ele tem apenas ApplicationPoolIdentity os privilégios para executar aplicativos Web.

Ao alterar esse privilégio para SharedUser , o programa Web pode operar com os privilégios do usuário que você definiu. Isso permite que programas SharedUser da Web acessem pastas compartilhadas no .

Ao abrir o Gerenciador do IIS, selecione Pools de Aplicativos.

Há um adicionado SharedFolderAccess automaticamente quando você cria um site, então clique com o botão direito do mouse sobre ele e selecione "Avançado".

Há um "ID" no modelo de processo, então clique no botão à direita.

Selecione "Conta personalizada" e clique no botão "Configurações".

SharedUser Digite e confirme seu nome de usuário e senha.

Confirmação de operação

Vá para a página da web e clique no botão. Se o conteúdo do arquivo de texto for exibido, ele será bem-sucedido.

Verifique se você também tem um novo arquivo na pasta compartilhada.