Toegang tot gedeelde mappen op andere servers vanuit ASP.NET Core-toepassingen (IIS, instellingen voor groepen van toepassingen)

Pagina bijgewerkt :
Aanmaakdatum van pagina :

Omgeving voor bedrijfsverificatie

Visual Studio
  • Visual Studio 2022
ASP.NET kern
  • 6 (Razpr-pagina's)
Windows Server
  • 2022 (ASP.NET kernsysteemvereisten)
  • 2019 (implementatieserver voor gedeelde mappen)
IIS (Engelstalig)
  • 10.0

Werkomgeving

Ik heb het niet in alles getest, maar het zou voor het grootste deel moeten werken.

Visual Studio
  • Alles wat een ASP.NET of ASP.NET Core-project kan ontwikkelen
ASP.NET kern
  • Elke versie (MVC, Razor Pages, API)
ASP.NET
  • Elke versie is acceptabel
Windows Server
  • Windows Server 2008 of hoger
IIS (Engelstalig)
  • 7.0 of hoger

voorwaarde

  • ASP.NET Core-toepassingen zijn bedoeld om op IIS te worden uitgevoerd. Andere webservers zullen niet in staat zijn om de inhoud van deze tips te implementeren

milieu

Het wordt geverifieerd in de volgende omgeving.

Doel van het gebruik van pc's en servers
Windows 11 (lokaal) Een omgeving voor het ontwikkelen van programma's. Niet relevant voor het doel van dit artikel
SV2022Test Een omgeving waarin IIS en ASP.NET Core worden uitgevoerd. Open hier de gedeelde map SV2019Test
SV2019Test Servers met gedeelde mappen

Daarnaast zijn de verschillende instellingen als volgt.

Parameternaam Waarde
Toegang tot gebruikersnaam Gedeelde gebruiker
Naam van gedeelde map Gedeelde map

Een programma maken voor het lezen en schrijven van bestanden uit een gedeelde map vanuit een ASP.NET Core-toepassing

Als een Mr./Ms. pull, klik gewoon op de knop,

  • Laad bestanden in een gedeelde map en geef ze weer op het scherm
  • Een nieuw bestand naar een gedeelde map schrijven

proces.

Ik heb nog geen gedeelde map gemaakt, dus ik kan het niet debuggen, maar het is eenvoudige code, dus ik zal voorlopig gewoon een programma maken.

ASP.NET Core-project kan van elk type zijn, maar in dit geval gebruik ik Razor Pages.

Index.cshtml.cs en voeg toe wat er gebeurt als er op de knop wordt geklikt. De servernaam wordt direct geschreven, maar pas deze goed aan in de praktijk. In sommige gevallen is de gedeelde map mogelijk niet toegankelijk, dus wordt deze ingesloten in een 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 heeft een knop en een bericht.

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

Nadat u het programma hebt gemaakt, maakt u een bestand om op de server te implementeren. In dit geval gebruiken we de methode om het gepubliceerde bestand rechtstreeks te plaatsen, maar het maakt niet uit welke methode u gebruikt. Bovendien is de indeling van het programma niet de essentie van deze tip, dus wordt deze op een vereenvoudigde manier vermeld.

Voeg een publicatieconfiguratie toe.

Wijzig de instellingen.

De instellingen worden gewijzigd zoals weergegeven in de afbeelding. Dit heeft ook niet echt te maken met het doel van deze tijd, dus stel het in op basis van uw omgeving.

Publiceer het programma.

Klik na het publiceren van het programma op de link "Doellocatie" en de map met de bestanden die u wilt plaatsen, wordt geopend.

Een server voor gedeelde mappen bouwen

Maak een gebruiker aan

Normaal gesproken, als de server anders is, wordt de gebruiker die op elke server is gemaakt, intern behandeld als een volledig andere gebruiker. Door een bestand te maken met dezelfde gebruikersnaam en hetzelfde wachtwoord, kunt u Windows-verificatie naar een andere server overslaan. Deze keer zullen we dit gebruiken om toegang te krijgen tot de gedeelde map op een andere server.

Trouwens, als je te maken hebt met servers en accounts in een domein als Active Directory, kun je beide servers met dat account instellen, wat de configuratie enigszins vereenvoudigt.

De procedure voor het aanmaken van een gebruiker wordt niet in detail beschreven.

SharedUser In dit geval maken we het met de naam . Aangezien deze gebruiker het scherm niet bedient of de instellingen wijzigt, kan het wachtwoord niet worden gewijzigd.

Als u de standaard verlaat, kunt u met deze gebruiker inloggen met Remote Desktop, enz., dus verwijder uit de groep Users .

Een gedeelde map maken

Het maakt niet uit waar je het maakt. Dit komt omdat andere servers zich niet bekommeren om de locatie van de fysieke map. In dit geval maken we een map met de naam direct onder SharedFolder de C-schijf en delen deze.

Open de eigenschappen en configureer de instellingen voor delen.

De naam van de gedeelde map moet SharedFolder zijn: . Deze naam is zichtbaar voor andere servers. Voeg de machtigingen toe SharedUser .

Everyone Verwijder de bestaande .

Bevestig met de machtiging "Wijzigen".

Aangezien we alleen machtigingen hebben toegevoegd die van buitenaf toegankelijk zijn, zullen we deze intern SharedUser zo instellen dat kan in deze map werken.

Bevestig met de machtiging "Wijzigen".

Maak een bestand om de bewerking te controleren.

Het is OK als u in Verkenner vanaf \\<サーバー名>\ een andere pc toegang hebt, inlogtSharedUser met en het bestand kunt bekijken.

Een applicatieserver bouwen

IIS installeren

Installeer het voorlopig standaard vanuit de serverbeheerder. Ik zal niet ingaan op de details van de procedure.

Er zijn geen extra functies vereist.

Er zijn op dit moment geen aanvullende IIS-services vereist.

ASP.NET Core Runtime Hosting Bundle Installatie

Aangezien we ASP.NET Core 6 gebruiken, moeten we de runtime dienovereenkomstig installeren. Download het van de volgende URL:

Om ASP.NET Core in IIS te kunnen draaien, heb je iets nodig dat "Hosting Bundle" wordt genoemd. Download de "Hosting Bundle" van de ASP.NET Core Runtime.

Eenmaal gedownload, voert u het uit op de server.

Volg de wizard om het te installeren.

Webapplicaties maken en implementeren

Open IIS-beheer (Internet Information Services) in Windows Systeembeheer.

U kunt "Standaardwebsite" gebruiken zoals het is, maar deze keer zullen we een nieuwe site maken. De standaardwebsite wordt automatisch gestart, dus stop deze alstublieft.

Maak een nieuwe website.

Deze keer is de naam van de site , maar dat maakt SharedFolderAccess niet uit.

De groep van toepassingen wordt automatisch gegenereerd voor de nieuwe site.

Maak en specificeer een map naar keuze waar u het programma wilt plaatsen.

Poort 80 heeft het label "Standaardwebsite" en u ziet een waarschuwing, maar u kunt deze negeren als deze al niet beschikbaar is.

Het is gemaakt.

Open de map die is opgegeven op de website in Windows Verkenner en kopieer en plaats alle gepubliceerde programma's zoals ze zijn.

Open de pagina via de IIS-koppeling en kijk of het scherm wordt weergegeven. U kunt eerst een webbrowser openen en de URL rechtstreeks invoeren.

Trouwens, zelfs als u in deze staat op de knop klikt, krijgt u een foutmelding omdat de machtigingsinstelling nog niet is voltooid.

Maak een gebruiker aan

Maak dezelfde gebruiker SharedUser op de toepassingsserver als op de server met gedeelde mappen. Zorg ervoor dat uw wachtwoorden ook overeenkomen. De stappen zijn precies hetzelfde.

Machtigingen voor groepen van toepassingen wijzigen

Toegang via webprogramma's wordt bepaald door de groep van toepassingen. Standaard heeft het alleen ApplicationPoolIdentity de rechten om webtoepassingen uit te voeren.

Door deze bevoegdheid te wijzigen in SharedUser , kan het webprogramma werken met de rechten van de gebruiker die u hebt ingesteld. Hierdoor kunnen webprogramma's SharedUser toegang krijgen tot gedeelde mappen in .

Wanneer u IIS-beheer opent, selecteert u Groepen van toepassingen.

Er wordt automatisch een website toegevoegd SharedFolderAccess wanneer u een website maakt, dus klik er met de rechtermuisknop op en selecteer "Geavanceerd".

Er is een "ID" in het procesmodel, dus klik op de knop aan de rechterkant.

Selecteer "Aangepast account" en klik op de knop "Instellingen".

SharedUser Voer uw gebruikersnaam en wachtwoord in en bevestig deze.

Bevestiging van de werking

Ga naar de webpagina en klik op de knop. Als de inhoud van het tekstbestand wordt weergegeven, is het gelukt.

Zorg ervoor dat je ook een nieuw bestand in de gedeelde map hebt.