Zelfstudie: Een ASP.NET Core-app verbinden met .NET Aspire-opslagintegraties
Cloudeigen apps vereisen vaak schaalbare opslagoplossingen die mogelijkheden bieden, zoals blobopslag, wachtrijen of semi-gestructureerde NoSQL-databases. .NET Aspire integraties vereenvoudigen verbindingen met verschillende opslagservices, zoals Azure Blob Storage. In deze zelfstudie maakt u een ASP.NET Core-app die gebruikmaakt van .NET Aspire-integraties om verbinding te maken met Azure Blob Storage en Azure Queue Storage om ondersteuningstickets in te dienen. De app verzendt de tickets naar een wachtrij voor verwerking en uploadt een bijlage naar de opslag. U leert het volgende:
- Een eenvoudige .NET-app maken die is ingesteld voor het gebruik van .NET Aspire-integraties
- .NET .NET Aspire-integraties toevoegen om verbinding te maken met meerdere opslagservices
- Functies van .NET.NET Aspire onderdelen configureren en gebruiken om gegevens te verzenden en te ontvangen
Voorwaarden
Als u met .NET.NET Aspirewilt werken, hebt u het volgende lokaal geïnstalleerd:
- .NET 8,0 of .NET 9,0
- Een OCI-compatibele containerruntime, zoals:
- Docker Desktop of Podman. Voor meer informatie, zie container runtime.
- Een IDE (Integrated Developer Environment) of code-editor, zoals:
- Visual Studio 2022 versie 17.9 of hoger (optioneel)
-
Visual Studio Code (optioneel)
- C# Dev Kit: extensie- (optioneel)
- JetBrains Rider met .NET.NET Aspire plugin (optioneel)
Zie .NET.NET Aspire setup en hulpprogramma'sen .NET.NET Aspire SDK-voor meer informatie.
De voltooide voorbeeld-app verkennen
Een voltooide versie van de voorbeeld-app uit deze zelfstudie is beschikbaar op GitHub. Het project is ook gestructureerd als sjabloon voor de Azure Developer CLI, wat betekent dat u de opdracht azd up
kunt gebruiken om de Azure resourcevoorziening te automatiseren, mits u het hulpprogramma hebt geïnstalleerd.
git clone https://github.com/Azure-Samples/dotnet-aspire-connect-storage.git
Stel de Azure opslagbronnen in
Voor dit artikel hebt u gegevensbijdragertoegang nodig tot een Azure Storage-account met een blobcontainer en opslagwachtrij. Zorg ervoor dat u over de volgende resources en configuraties beschikt:
Voor dit artikel moet u een blobcontainer en opslagwachtrijresource maken in uw lokale ontwikkelomgeving met behulp van een emulator. Gebruik Azurite om dit te doen. Azurite is een gratis, open source, platformoverschrijdende Azure Storage-API die compatibel is met server (emulator) die wordt uitgevoerd in een Docker container.
Als u de emulator wilt gebruiken, moet u van Azurite installeren.
- Een Azure Storage-account- Een opslagaccount maken.
- Een Blob Storage-container met de naam fileuploads - Een blobopslagcontainer maken.
- Een opslagwachtrij genaamd tickets - . Maak een opslagwachtrij.
Voer de volgende opdrachten uit in de Azure CLI of CloudShell om de vereiste Azure Storage-resources in te stellen:
az group create --name aspirestorage --location eastus2
az storage account create -n aspirestorage -g aspirestorage -l eastus2
az storage container create -n fileuploads --account-name aspirestorage
az storage queue create -n tickets --account-name aspirestorage
U moet ook de volgende rollen toewijzen aan het gebruikersaccount waarmee u bent aangemeld Visual Studio:
- Inzender voor opslagblobgegevens - Een Azure RBAC-rol toewijzen
- Inzender voor opslagwachtrijgegevens - Een Azure RBAC-rol toewijzen
Met de Azure Developer CLI kunt u Azure resources inrichten en implementeren met behulp van een sjabloonsysteem. Deze zelfstudie biedt een volledige sjabloon die de vereiste Azure resources levert en de voltooide voorbeeldtoepassingscode bevat. Voer de volgende opdrachten uit om de sjabloon te initialiseren en uit te voeren:
Voer
azd auth login
uit om u aan te melden bij Azure:azd auth login
Voer
azd init
uit om de voorbeeldsjabloon te klonen en te initialiseren:azd init --template dotnet-aspire-connect-storage
Voer
azd up
uit om de Azure middelen in te stellen:azd up
Wanneer u hierom wordt gevraagd, selecteert u het abonnement en de Azure-regio voor de toegekende resources. De sjabloon wordt uitgevoerd en voltooit de volgende taken voor u:
- Hiermee maakt u een Azure Storage-account waarvoor blob- en wachtrijservices zijn ingeschakeld
- Hiermee maakt u een blob-opslagcontainer met de naam
fileUploads
- Hiermee maakt u een wachtrij met de naam
tickets
- Wijst de volgende rollen toe aan het gebruikersaccount waarop de sjabloon is uitgevoerd.
- Inzender voor opslagblobgegevens
- Inzender voor opslagwachtrijgegevens
Nadat de bewerking is voltooid, hebt u twee opties:
- Optie 1: Voer de .NET voorbeeld-app uit in de sjabloon
src
map om te experimenteren met de voltooide app. - Optie 2: Bouw stap voor stap de voorbeeld-app met behulp van de volgende secties en verbind deze met de Azure resources die door
azd
zijn ingericht.
De voorbeeldoplossing maken
Maak een .NET Aspire project met behulp van Visual Studio of de .NET CLI.
- Ga naar boven in Visual Studionaar Bestand>Nieuw>Project.
- Zoek in het dialoogvenster naar Aspire en selecteer .NET.NET Aspire Starter-toepassing. Kies Volgende.
- Op het scherm Uw nieuwe project configureren:
- Voer een oplossingsnaam van AspireStorage in en selecteer Volgende.
- Op het scherm Aanvullende informatie:
- Schakel de optie uit, gebruik Redis om te cachen (niet vereist voor deze zelfstudie).
- Selecteer maken.
Visual Studio maakt een nieuwe ASP.NET Core oplossing die is gestructureerd om .NET Aspirete gebruiken.
De oplossing bestaat uit de volgende projecten:
- AspireStorage.ApiService - Een API-project met standaardserviceconfiguraties .NET.NET Aspire.
- AspireStorage.AppHost - Een orchestratorproject dat is ontworpen om de verschillende projecten en services van uw app te verbinden en te configureren. De orchestrator moet worden ingesteld als het startproject.
- AspireStorage.ServiceDefaults - Een gedeelde klassebibliotheek voor het opslaan van code die opnieuw kan worden gebruikt in de projecten in uw oplossing.
- AspireStorage.Web - Een BlazorServer project dat fungeert als de front-end van uw app.
Het Worker Service-project toevoegen
Voeg vervolgens een Worker Service project toe aan de oplossing om berichten op te halen en te verwerken wanneer ze worden toegevoegd aan de Azure Storage-wachtrij.
- Klik in de Oplossingsverkenner met de rechtermuisknop op het bovenste niveau AspireStorage oplossingsknooppunt en selecteer Nieuw project toevoegen>.
- Zoek en selecteer de sjabloon Worker Service en kies Volgende.
- Voer voor de projectnaamAspireStorage.WorkerService in en selecteer Volgende.
- Op het scherm Aanvullende informatie:
- Zorg ervoor dat .NET 9,0 is geselecteerd.
- Zorg ervoor dat Enlist in .NET.NET Aspire orchestratie is ingeschakeld en selecteer Maken.
Visual Studio het project aan uw oplossing toevoegt en het Program.cs-bestand van het project AspireStorage.AppHost bijwerkt met een nieuwe coderegel:
builder.AddProject<Projects.AspireStorage_WorkerService>(
"aspirestorage-workerservice");
Visual Studio-tooling heeft deze coderegel toegevoegd om uw nieuwe project te registreren bij het IDistributedApplicationBuilder-object, waarmee orkestratiefuncties mogelijk worden gemaakt. Voor meer informatie, zie .NET.NET Aspire orkestratieoverzicht.
De voltooide oplossingsstructuur moet er ongeveer als volgt uitzien:
De .NET Aspire-integraties toevoegen aan de Blazor-app
Voeg de .NET AspireAzure Blob Storage-integratie, en .NET AspireAzure Queue Storage-integratie-pakketten toe aan uw AspireStorage.Web-project.
dotnet add package Aspire.Azure.Storage.Blobs
dotnet add package Aspire.Azure.Storage.Queues
Uw AspireStorage.Web project is nu ingesteld voor het gebruik van .NET.NET Aspire integraties. Dit is het bijgewerkte bestand AspireStorage.Web.csproj:
<Project Sdk="Microsoft.NET.Sdk.Web">
<PropertyGroup>
<TargetFramework>net9.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\AspireStorage.ServiceDefaults\AspireStorage.ServiceDefaults.csproj" />
</ItemGroup>
<ItemGroup>
<PackageReference Include="Aspire.Azure.Storage.Blobs" Version="9.0.0" />
<PackageReference Include="Aspire.Azure.Storage.Queues" Version="9.0.0" />
</ItemGroup>
</Project>
De volgende stap bestaat uit het toevoegen van de integraties aan de app.
Voeg in het Program.cs bestand van het project AspireStorage.Web aanroepen toe aan de AddAzureBlobClient- en AddAzureQueueClient-extensiemethoden na het maken van de builder
, maar vóór de aanroep naar AddServiceDefaults
. Zie .NET.NET Aspire servicestandaardenvoor meer informatie. Geef de naam van de verbindingsreeks op als parameter.
using AspireStorage.Web;
using AspireStorage.Web.Components;
using Azure.Storage.Blobs;
using Azure.Storage.Queues;
var builder = WebApplication.CreateBuilder(args);
builder.AddAzureBlobClient("BlobConnection");
builder.AddAzureQueueClient("QueueConnection");
// Add service defaults & Aspire components.
builder.AddServiceDefaults();
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddOutputCache();
builder.Services.AddHttpClient<WeatherApiClient>(client =>
{
// This URL uses "https+http://" to indicate HTTPS is preferred over HTTP.
// Learn more about service discovery scheme resolution at https://aka.ms/dotnet/sdschemes.
client.BaseAddress = new("https+http://apiservice");
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
else
{
// In development, create the blob container and queue if they don't exist.
var blobService = app.Services.GetRequiredService<BlobServiceClient>();
var docsContainer = blobService.GetBlobContainerClient("fileuploads");
await docsContainer.CreateIfNotExistsAsync();
var queueService = app.Services.GetRequiredService<QueueServiceClient>();
var queueClient = queueService.GetQueueClient("tickets");
await queueClient.CreateIfNotExistsAsync();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
app.UseOutputCache();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.MapDefaultEndpoints();
app.Run();
using AspireStorage.Web;
using AspireStorage.Web.Components;
using Azure.Storage.Blobs;
using Azure.Storage.Queues;
var builder = WebApplication.CreateBuilder(args);
builder.AddAzureBlobClient("BlobConnection");
builder.AddAzureQueueClient("QueueConnection");
// Add service defaults & Aspire components.
builder.AddServiceDefaults();
// Add services to the container.
builder.Services.AddRazorComponents()
.AddInteractiveServerComponents();
builder.Services.AddOutputCache();
builder.Services.AddHttpClient<WeatherApiClient>(client =>
{
// This URL uses "https+http://" to indicate HTTPS is preferred over HTTP.
// Learn more about service discovery scheme resolution at https://aka.ms/dotnet/sdschemes.
client.BaseAddress = new("https+http://apiservice");
});
var app = builder.Build();
if (!app.Environment.IsDevelopment())
{
app.UseExceptionHandler("/Error", createScopeForErrors: true);
// The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts.
app.UseHsts();
}
app.UseHttpsRedirection();
app.UseStaticFiles();
app.UseAntiforgery();
app.UseOutputCache();
app.MapRazorComponents<App>()
.AddInteractiveServerRenderMode();
app.MapDefaultEndpoints();
app.Run();
Met de aanvullende using
-instructies worden met deze methoden de volgende taken uitgevoerd:
- Registreer een Azure.Storage.Blobs.BlobServiceClient en een Azure.Storage.Queues.QueueServiceClient bij de DI-container om verbinding te maken met Azure Storage.
- Schakel automatisch bijbehorende statuscontroles, logboekregistratie en telemetrie in voor de respectieve services.
Wanneer het project AspireStorage.Web begint, wordt er een fileuploads
container gemaakt in Azurite Blob Storage en een tickets
wachtrij in Azurite Queue Storage. Dit is voorwaardelijk wanneer de app wordt uitgevoerd in een ontwikkelomgeving. Wanneer de app wordt uitgevoerd in een productieomgeving, wordt ervan uitgegaan dat de container en wachtrij al zijn gemaakt.
De .NET Aspire-integratie toevoegen aan de Worker Service
De workerservice haalt berichten uit de Azure Storage-wachtrij voor verwerking. Voeg het .NET AspireAzure Queue Storage-integratiepakket-integratiepakket toe aan uw AspireStorage.WorkerService-app:
dotnet add package Aspire.Azure.Storage.Queues
Voeg in het Program.cs bestand van het project AspireStorage.WorkerService een aanroep toe aan de AddAzureQueueClient-extensiemethode na het maken van de builder
, maar vóór de aanroep naar AddServiceDefaults
:
using AspireStorage.WorkerService;
var builder = Host.CreateApplicationBuilder(args);
builder.AddAzureQueueClient("QueueConnection");
builder.AddServiceDefaults();
builder.Services.AddHostedService<WorkerService>();
var host = builder.Build();
host.Run();
Met deze methode worden de volgende taken verwerkt:
- Registreer een QueueServiceClient bij de DI-container om verbinding te maken met Azure Storage Queues.
- Schakel automatisch bijbehorende statuscontroles, logboekregistratie en telemetrie in voor de respectieve services.
Het formulier maken
De app vereist een formulier voor de gebruiker om ondersteuningsticketgegevens in te dienen en een bijlage te uploaden. De app uploadeert het bijgevoegde bestand van de eigenschap Document
(IFormFile) naar Azure Blob Storage met behulp van de geïnjecteerde BlobServiceClient. De QueueServiceClient verzendt een bericht dat bestaat uit de Title
en Description
naar de Azure Storage-wachtrij.
Gebruik de volgende Razor-opmaak om een basisformulier te maken, waarbij u de inhoud van het bestand Home.razor in de map AspireStorage.Web/Components/Pages vervangt:
@page "/"
@using System.ComponentModel.DataAnnotations
@using Azure.Storage.Blobs
@using Azure.Storage.Queues
@inject BlobServiceClient BlobClient
@inject QueueServiceClient QueueServiceClient
<PageTitle>Home</PageTitle>
<div class="text-center">
<h1 class="display-4">Request Support</h1>
</div>
<EditForm Model="@Ticket" FormName="Tickets" method="post"
OnValidSubmit="@HandleValidSubmit" enctype="multipart/form-data">
<DataAnnotationsValidator />
<ValidationSummary />
<div class="mb-4">
<label>Issue Title</label>
<InputText class="form-control" @bind-Value="@Ticket.Title" />
<ValidationMessage For="() => Ticket.Title" />
</div>
<div class="mb-4">
<label>Issue Description</label>
<InputText class="form-control" @bind-Value="@Ticket.Description" />
<ValidationMessage For="() => Ticket.Description" />
</div>
<div class="mb-4">
<label>Attachment</label>
<InputFile class="form-control" name="Ticket.Document" />
<ValidationMessage For="() => Ticket.Document" />
</div>
<button class="btn btn-primary" type="submit">Submit</button>
<button class="btn btn-danger mx-2" type="reset" @onclick=@ClearForm>Clear</button>
</EditForm>
@code {
[SupplyParameterFromForm(FormName = "Tickets")]
private SupportTicket Ticket { get; set; } = new();
private async Task HandleValidSubmit()
{
var docsContainer = BlobClient.GetBlobContainerClient("fileuploads");
// Upload file to blob storage
await docsContainer.UploadBlobAsync(
Ticket.Document.FileName,
Ticket.Document.OpenReadStream());
// Send message to queue
var queueClient = QueueServiceClient.GetQueueClient("tickets");
await queueClient.SendMessageAsync(
$"{Ticket.Title} - {Ticket.Description}");
ClearForm();
}
private void ClearForm() => Ticket = new();
private class SupportTicket()
{
[Required] public string Title { get; set; } = default!;
[Required] public string Description { get; set; } = default!;
[Required] public IFormFile Document { get; set; } = default!;
}
}
Zie ASP.NET CoreBlazor overzicht van formulierenvoor meer informatie over het maken van formulieren in Blazor.
De AppHost bijwerken
Het project AspireStorage.AppHost is de orchestrator voor uw app. Het is verantwoordelijk voor het verbinden en configureren van de verschillende projecten en services van uw app. De orchestrator moet worden ingesteld als het startproject.
Als u ondersteuning voor Azure Storage-hosting wilt toevoegen aan uw IDistributedApplicationBuilder, installeert u het 📦Aspire.Hosting.Azure.Storage NuGet-pakket.
dotnet add package Aspire.Hosting.Azure.Storage
Vervang de inhoud van het Program.cs-bestand in het project AspireStorage.AppHost door de volgende code:
using Microsoft.Extensions.Hosting;
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("Storage");
if (builder.Environment.IsDevelopment())
{
storage.RunAsEmulator();
}
var blobs = storage.AddBlobs("BlobConnection");
var queues = storage.AddQueues("QueueConnection");
var apiService = builder.AddProject<Projects.AspireStorage_ApiService>("apiservice");
builder.AddProject<Projects.AspireStorage_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WithReference(blobs)
.WithReference(queues);
builder.AddProject<Projects.AspireStorage_WorkerService>("aspirestorage-workerservice")
.WithReference(queues);
builder.Build().Run();
Met de voorgaande code worden Azure opslag, blobs en wachtrijen toegevoegd, en wanneer deze zich in de ontwikkelmodus bevindt, wordt de emulator gebruikt. Elk project definieert verwijzingen voor deze resources waarvoor ze afhankelijk zijn.
using Microsoft.Extensions.Hosting;
var builder = DistributedApplication.CreateBuilder(args);
var storage = builder.AddAzureStorage("Storage");
var blobs = storage.AddBlobs("BlobConnection");
var queues = storage.AddQueues("QueueConnection");
var apiService = builder.AddProject<Projects.AspireStorage_ApiService>("apiservice");
builder.AddProject<Projects.AspireStorage_Web>("webfrontend")
.WithExternalHttpEndpoints()
.WithReference(apiService)
.WithReference(blobs)
.WithReference(queues);
builder.AddProject<Projects.AspireStorage_WorkerService>("aspirestorage-workerservice")
.WithReference(queues);
builder.Build().Run();
De voorgaande code voegt Azure opslag, blobs en wachtrijen toe en definieert verwijzingen voor deze resources binnen elk project dat ervan afhankelijk is.
De items in de wachtrij verwerken
Wanneer een nieuw bericht in de tickets
wachtrij wordt geplaatst, moet de werkservice het bericht ophalen, verwerken en verwijderen. Werk de Worker.cs-klasse bij en vervang de inhoud door de volgende code:
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;
namespace AspireStorage.WorkerService;
public sealed class WorkerService(
QueueServiceClient client,
ILogger<WorkerService> logger) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var queueClient = client.GetQueueClient("tickets");
await queueClient.CreateIfNotExistsAsync(cancellationToken: stoppingToken);
while (!stoppingToken.IsCancellationRequested)
{
QueueMessage[] messages =
await queueClient.ReceiveMessagesAsync(
maxMessages: 25, cancellationToken: stoppingToken);
foreach (var message in messages)
{
logger.LogInformation(
"Message from queue: {Message}", message.MessageText);
await queueClient.DeleteMessageAsync(
message.MessageId,
message.PopReceipt,
cancellationToken: stoppingToken);
}
// TODO: Determine an appropriate time to wait
// before checking for more messages.
await Task.Delay(TimeSpan.FromSeconds(15), stoppingToken);
}
}
}
Voordat de werkdienst berichten kan verwerken, moet deze verbinding kunnen maken met de Azure Storage-wachtrij. Met Azurite moet u ervoor zorgen dat de wachtrij beschikbaar is voordat de werkerservice begint met het uitvoeren van berichtverwerking.
using Azure.Storage.Queues;
using Azure.Storage.Queues.Models;
namespace AspireStorage.WorkerService;
public sealed class WorkerService(
QueueServiceClient client,
ILogger<WorkerService> logger) : BackgroundService
{
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
var queueClient = client.GetQueueClient("tickets");
while (!stoppingToken.IsCancellationRequested)
{
QueueMessage[] messages =
await queueClient.ReceiveMessagesAsync(
maxMessages: 25, cancellationToken: stoppingToken);
foreach (var message in messages)
{
logger.LogInformation(
"Message from queue: {Message}", message.MessageText);
await queueClient.DeleteMessageAsync(
message.MessageId,
message.PopReceipt,
cancellationToken: stoppingToken);
}
// TODO: Determine an appropriate time to wait
// before checking for more messages.
await Task.Delay(TimeSpan.FromSeconds(15), stoppingToken);
}
}
}
De werkerservice verwerkt berichten door verbinding te maken met de Azure Storage-wachtrij en de berichten uit de wachtrij te halen.
De werkerservice verwerkt de berichten in de wachtrij en verwijdert deze wanneer ze zijn verwerkt.
De verbindingsreeksen configureren
De AspireStorage- en AspireStorage. Worker-projecten moeten zijn geconfigureerd om verbinding te maken met het juiste Azure opslagaccount dat u eerder hebt gemaakt. U kunt de eindpunten voor de blob- en wachtrijservices in het opslagaccount opgeven met behulp van het appsettings.json-bestand in elk project.
Voeg in het project AspireStorage de volgende configuratie toe aan het
appsettings.Development.json
-bestand:"ConnectionStrings": { "BlobConnection": "https://<your-storage-account-name>.blob.core.windows.net/", "QueueConnection": "https://<your-storage-account-name>.queue.core.windows.net/" }
Voeg in het project AspireStorage.Worker de volgende configuratie toe aan het
appsettings.Development.json
-bestand:"ConnectionStrings": { "QueueConnection": "https://<your-storage-account-name>.queue.core.windows.net/" }
De app lokaal uitvoeren en testen
De voorbeeld-app is nu klaar voor testen. Controleer of de verzonden formuliergegevens naar Azure Blob Storage en Azure Queue Storage worden verzonden door de volgende stappen uit te voeren:
Druk op de knop Uitvoeren bovenaan Visual Studio om uw .NET Aspire projectdashboard in de browser te starten.
Klik op de pagina resources in de rij aspirestorage.web op de koppeling in de kolom Eindpunten om de gebruikersinterface van uw app te openen.
Voer voorbeeldgegevens in de
Title
- enDescription
formuliervelden in en selecteer een eenvoudig bestand dat u wilt uploaden.Selecteer de knop Verzenden en het formulier verzendt het ondersteuningsticket voor verwerking en wist het formulier.
Gebruik in een afzonderlijk browsertabblad de Azure-portal om naar de -opslagbrowser te navigeren in uw Azure-opslagaccount.
Selecteer Containers en navigeer vervolgens naar de container Documenten om het geüploade bestand te zien.
U kunt controleren of het bericht in de wachtrij is verwerkt door de Project-logboeken te bekijken van het .NET.NET Aspire dashboarden de aspirestorage.workerservice te selecteren in de vervolgkeuzelijst.
Samenvatting
In de voorbeeld-app die u hebt gemaakt, ziet u persistente blobs uit een ASP.NET CoreBlazor Web App en wachtrijen verwerken in een .NET Worker Service. Uw app maakt verbinding met Azure Storage met behulp van .NET Aspire-integraties. De app verzendt de ondersteuningstickets naar een wachtrij voor verwerking en uploadt een bijlage naar de opslag.
Omdat u ervoor kiest om Azurite te gebruiken, hoeft u deze resources niet op te schonen wanneer u klaar bent met testen, omdat u ze lokaal hebt gemaakt in de context van een emulator. Met de emulator kunt u uw app lokaal testen zonder dat er kosten in rekening worden gebracht, omdat er geen Azure resources zijn ingericht of gemaakt.
Resources opschonen
Voer de volgende Azure CLI-opdracht uit om de resourcegroep te verwijderen wanneer u de Azure resources die u hebt gemaakt niet meer nodig hebt. Als u de resourcegroep verwijdert, worden ook de resources in de resourcegroep verwijderd.
az group delete --name <your-resource-group-name>
Zie Resources opschonen in Azurevoor meer informatie.