Åtkomst till delade mappar på andra servrar från ASP.NET Core-program (IIS, inställningar för programpooler)
Miljö för verifiering av åtgärder
- Visuell studio
-
- Visual Studio 2022
- ASP.NET kärna
-
- 6 (Razpr-sidor)
- Windows Server
-
- 2022 (ASP.NET grundläggande systemkrav)
- 2019 (distributionsserver för delade mappar)
- IIS (IIS)
-
- 10.0
Omvärld
Jag har inte testat det i allt, men det borde fungera för det mesta.
- Visuell studio
-
- Allt som kan utveckla ett ASP.NET eller ASP.NET Core-projekt
- ASP.NET kärna
-
- Vilken version som helst (MVC, Razor Pages, API)
- ASP.NET
-
- Alla versioner är acceptabla
- Windows Server
-
- Windows Server 2008 eller senare
- IIS (IIS)
-
- 7.0 eller senare
förutsättning
- ASP.NET Core-program är avsedda att köras på IIS. Andra webbservrar kommer inte att kunna implementera innehållet i dessa tips
miljö
Det verifieras i följande miljö.
Syfte med användning av | datorer och servrar |
---|---|
Windows 11 (lokalt) | En miljö för att utveckla program. Irrelevant för syftet med denna artikel |
SV2022Test | En miljö som kör IIS och ASP.NET Core. Öppna den delade mappen SV2019Test härifrån |
SV2019Test | Servrar med delade mappar |
Dessutom är de olika inställningarna följande.
Parameternamn | Värde |
---|---|
Åtkomst till användarnamn | DeladUser |
Namn på delad mapp | DeladFolder |
Skapa ett program för att läsa och skriva filer från en delad mapp från ett ASP.NET Core-program
Som en Mr./Ms. pull, klicka helt enkelt på knappen,
- Ladda filer i en delad mapp och visa dem på skärmen
- Skriva en ny fil till en delad mapp
process.
Jag har inte skapat en delad mapp ännu, så jag kan inte felsöka den, men det är enkel kod, så jag gör bara ett program för tillfället.
ASP.NET Core-projekt kan vara vilken typ som helst, men i det här fallet använder jag Razor Pages.
Index.cshtml.cs
och lägg till vad som händer när du klickar på knappen.
Servernamnet skrivs direkt, men justera det väl i verklig drift.
I vissa fall kanske den delade mappen inte är tillgänglig, så den är innesluten i en 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
har en knapp och ett meddelande.
@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>
@* ここまで追加 *@
När du har skapat programmet skapar du en fil som ska distribueras till servern. I det här fallet kommer vi att använda metoden för att placera den publicerade filen direkt, men det spelar ingen roll vilken metod du använder. Dessutom är arrangemanget av programmet inte kärnan i detta tips, så det listas på ett förenklat sätt.
Lägg till en publiceringskonfiguration.
Ändra inställningarna.
Inställningarna ändras som visas i figuren. Detta är inte heller särskilt relaterat till syftet med denna tid, så ställ in det enligt din miljö.
Publicera programmet.
När du har publicerat programmet klickar du på länken "Målplats" så öppnas mappen med de filer du vill placera.
Bygga en server för delade mappar
Skapa en användare
Normalt, om servern är annorlunda, behandlas användaren som skapas på varje server internt som en helt annan användare. Genom att skapa en fil med samma användarnamn och lösenord kan du hoppa över Windows-autentisering till en annan server. Den här gången kommer vi att använda detta för att komma åt den delade mappen på en annan server.
Förresten, om du har att göra med servrar och konton i en domän som Active Directory kan du ställa in båda servrarna med det kontot, vilket förenklar konfigurationen till viss del.
Proceduren för att skapa en användare beskrivs inte i detalj.
SharedUser
I det här fallet skapar vi den med namnet .
Eftersom den här användaren inte använder skärmen eller ändrar inställningarna kan lösenordet inte ändras.
Om du lämnar standardinställningen kan du logga in med den här användaren med Fjärrskrivbord osv., så ta bort från gruppen Users
.
Skapa en delad mapp
Det spelar ingen roll var du skapar den. Detta beror på att andra servrar inte bryr sig om platsen för den fysiska mappen.
I det här fallet kommer vi att skapa en mapp med namnet direkt under SharedFolder
C-enheten och dela den.
Öppna egenskaperna och konfigurera delningsinställningarna.
Namnet på den delade mappen ska SharedFolder
vara . Det här namnet kommer att vara synligt för andra servrar.
Lägg till SharedUser
behörigheterna.
Everyone
Ta bort den befintliga .
Bekräfta med behörigheten "Ändra".
Eftersom vi bara har lagt till behörigheter som kan nås utifrån, kommer vi att ställa in det internt SharedUser
så att det kan fungera i den här mappen.
Bekräfta med behörigheten "Ändra".
Skapa en fil för att kontrollera åtgärden.
Det är OK om du kan komma åt i Utforskaren från \\<サーバー名>\
en annan dator, logga inSharedUser
med och visa filen.
Skapa en programserver
Installera IIS
För närvarande installerar du det som standard från serverhanteraren. Jag kommer inte att gå in på detaljerna i proceduren.
Inga ytterligare funktioner krävs.
Inga ytterligare IIS-tjänster krävs just nu.
ASP.NET Core Runtime Hosting Bundle Installation
Eftersom vi använder ASP.NET Core 6 måste vi installera körningen därefter. Ladda ner den från följande URL:
För att kunna köra ASP.NET Core i IIS behöver du något som kallas "Hosting Bundle". Ladda ned "Hosting Bundle" från ASP.NET Core Runtime.
När du har laddat ner kör du den på servern.
Följ guiden för att installera den.
Skapa och distribuera webbprogram
Öppna IIS-hanteraren (Internet Information Services) i Windows Administrationsverktyg.
Du kan använda "Standardwebbplats" som den är, men den här gången skapar vi en ny webbplats. Standardwebbplatsen startas automatiskt, så stoppa den.
Skapa en ny webbplats.
Den här gången är SharedFolderAccess
webbplatsens namn , men det spelar ingen roll.
Programpoolen genereras automatiskt för den nya platsen.
Skapa och ange en valfri mapp där du vill placera programmet.
Port 80 är märkt "Standardwebbplats" och du kommer att se en varning, men du kan ignorera den om den redan är nere.
Den har skapats.
Öppna mappen som anges på webbplatsen i Utforskaren och kopiera och placera alla publicerade program som de är.
Öppna sidan från IIS-länken och se om skärmen visas. Du kan öppna en webbläsare först och ange URL:en direkt.
Förresten, även om du klickar på knappen i det här läget får du ett felmeddelande eftersom behörighetsinställningen inte har slutförts ännu.
Skapa en användare
Skapa samma användare SharedUser
på programservern som på servern för den delade mappen. Se till att dina lösenord också matchar. Stegen är exakt desamma.
Ändra behörigheter för programpool
Åtkomst via webbprogram bestäms av programpoolen.
Som standard har den bara ApplicationPoolIdentity
behörighet att köra webbprogram.
Genom att ändra den här behörigheten till SharedUser
kan webbprogrammet användas med de behörigheter som den användare som du har angett har.
Detta gör det möjligt för webbprogram SharedUser
att komma åt delade mappar i .
När du öppnar IIS-hanteraren väljer du Programpooler.
Det läggs till SharedFolderAccess
automatiskt när du skapar en webbplats, så högerklicka på den och välj "Avancerat".
Det finns ett "ID" i processmodellen, så klicka på knappen till höger.
Välj "Anpassat konto" och klicka på knappen "Inställningar".
SharedUser
Ange och bekräfta ditt användarnamn och lösenord.
Bekräftelse av drift
Gå till webbsidan och klicka på knappen. Om innehållet i textfilen visas är det framgångsrikt.
Se till att du också har en ny fil i den delade mappen.