Acessando pastas compartilhadas em outros servidores a partir de aplicativos ASP.NET Core (IIS, configurações do pool de aplicativos)
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.