Skip to content

Commit c3896ad

Browse files
MackinnonBuckjeffhandleyjozkee
authored
Update chat template dependencies, fix OpenAI/Aspire config, and address build warnings (#6280)
* Update chat template dependencies * Update test snapshots * Update Aspire version * Revert Aspire + update CommunityToolkit.Aspire * Open README in VS after project creation * Add Known Issue to Aspire README for Qdrant * Update survey template URL * Set the Project Template package version to -preview.2 * Update template baseline * Update template pinned versions * Do not append template args to snapshot names * Fix vector store index in the README. Add an AzureAISearch template test. * Add a note to the Aspire README for trusting the development certificate * Use AddOpenAIClient for OpenAI and AddAzureOpenAIClient for Azure OpenAI * Remove duplicated using System.ClientModel * Update Aspire README to specify the exception thrown for the known issue * Augment the Aspire README for more Docker notes for Ollama and Qdrant * Fix Microsoft.Extensions.Http.Resilience warnings with separate pinned versions * Update test baseline for: Rename EmbeddingGeneratorExtensions.GenerateEmbedding extension methods (#6295) * Add --managed-identity to the template developer README * Apply the Ollama timeout recommendation in the template code * Call http.RemoveAllResilienceHandlers before adding the handler * Update template test baseline --------- Co-authored-by: Jeff Handley <[email protected]> Co-authored-by: David Cantu <[email protected]>
1 parent 24c7627 commit c3896ad

File tree

138 files changed

+17891
-88
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

138 files changed

+17891
-88
lines changed

eng/Versions.props

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -156,19 +156,19 @@
156156
<!-- AI templates -->
157157
<AspireVersion>9.1.0</AspireVersion>
158158
<AspireAzureAIOpenAIVersion>9.1.0-preview.1.25121.10</AspireAzureAIOpenAIVersion>
159-
<AzureAIProjectsVersion>1.0.0-beta.3</AzureAIProjectsVersion>
159+
<AzureAIProjectsVersion>1.0.0-beta.6</AzureAIProjectsVersion>
160160
<AzureAIOpenAIVersion>2.2.0-beta.4</AzureAIOpenAIVersion>
161161
<AzureIdentityVersion>1.13.2</AzureIdentityVersion>
162162
<AzureSearchDocumentsVersion>11.6.0</AzureSearchDocumentsVersion>
163-
<CommunityToolkitAspireHostingOllamaVersion>9.2.2-beta.236</CommunityToolkitAspireHostingOllamaVersion>
164-
<CommunityToolkitAspireHostingSqliteVersion>9.2.2-beta.236</CommunityToolkitAspireHostingSqliteVersion>
165-
<CommunityToolkitAspireMicrosoftEntityFrameworkCoreSqliteVersion>9.2.2-beta.236</CommunityToolkitAspireMicrosoftEntityFrameworkCoreSqliteVersion>
166-
<CommunityToolkitAspireOllamaSharpVersion>9.2.2-beta.236</CommunityToolkitAspireOllamaSharpVersion>
167-
<MicrosoftExtensionsServiceDiscoveryVersion>9.1.0</MicrosoftExtensionsServiceDiscoveryVersion>
168-
<MicrosoftSemanticKernelConnectorsAzureAISearchVersion>1.41.0-preview</MicrosoftSemanticKernelConnectorsAzureAISearchVersion>
169-
<MicrosoftSemanticKernelConnectorsQdrantVersion>1.41.0-preview</MicrosoftSemanticKernelConnectorsQdrantVersion>
170-
<MicrosoftSemanticKernelCoreVersion>1.41.0</MicrosoftSemanticKernelCoreVersion>
171-
<OllamaSharpVersion>5.1.9</OllamaSharpVersion>
163+
<CommunityToolkitAspireHostingOllamaVersion>9.3.1-beta.260</CommunityToolkitAspireHostingOllamaVersion>
164+
<CommunityToolkitAspireHostingSqliteVersion>9.3.1-beta.260</CommunityToolkitAspireHostingSqliteVersion>
165+
<CommunityToolkitAspireMicrosoftEntityFrameworkCoreSqliteVersion>9.3.1-beta.260</CommunityToolkitAspireMicrosoftEntityFrameworkCoreSqliteVersion>
166+
<CommunityToolkitAspireOllamaSharpVersion>9.3.1-beta.260</CommunityToolkitAspireOllamaSharpVersion>
167+
<MicrosoftExtensionsServiceDiscoveryVersion>9.2.0</MicrosoftExtensionsServiceDiscoveryVersion>
168+
<MicrosoftSemanticKernelConnectorsAzureAISearchVersion>1.45.0-preview</MicrosoftSemanticKernelConnectorsAzureAISearchVersion>
169+
<MicrosoftSemanticKernelConnectorsQdrantVersion>1.45.0-preview</MicrosoftSemanticKernelConnectorsQdrantVersion>
170+
<MicrosoftSemanticKernelCoreVersion>1.45.0</MicrosoftSemanticKernelCoreVersion>
171+
<OllamaSharpVersion>5.1.12</OllamaSharpVersion>
172172
<OpenTelemetryVersion>1.9.0</OpenTelemetryVersion>
173173
<PdfPigVersion>0.1.9</PdfPigVersion>
174174
<SystemLinqAsyncVersion>6.0.1</SystemLinqAsyncVersion>

src/ProjectTemplates/GeneratedContent.targets

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,22 +15,24 @@
1515
<Target Name="ComputeGeneratedContentProperties">
1616
<PropertyGroup>
1717
<!-- Define optional pinned versions of certain dependencies. -->
18-
<TemplatePinnedRepoPackagesVersion>9.3.0-preview.1.25161.3</TemplatePinnedRepoPackagesVersion>
19-
<TemplatePinnedMicrosoftEntityFrameworkCoreSqliteVersion>9.0.3</TemplatePinnedMicrosoftEntityFrameworkCoreSqliteVersion>
18+
<TemplatePinnedRepoPackagesVersion>9.4.0</TemplatePinnedRepoPackagesVersion>
19+
<TemplatePinnedRepoAIPackagesVersion>9.4.0-preview.1.25207.5</TemplatePinnedRepoAIPackagesVersion>
20+
<TemplatePinnedMicrosoftEntityFrameworkCoreSqliteVersion>9.0.4</TemplatePinnedMicrosoftEntityFrameworkCoreSqliteVersion>
2021

2122
<!-- By default, don't use pinned dependency versions. -->
22-
<TemplateUsePinnedRepoPackagesVersion Condition="'$(TemplateUsePinnedRepoPackagesVersion)' == ''">false</TemplateUsePinnedRepoPackagesVersion>
23-
<TemplateUsePinnedMicrosoftEntityFrameworkCoreSqliteVersion Condition="'$(TemplateUsePinnedMicrosoftEntityFrameworkCoreSqliteVersion)' == ''">false</TemplateUsePinnedMicrosoftEntityFrameworkCoreSqliteVersion>
23+
<TemplateUsePinnedPackageVersions Condition="'$(TemplateUsePinnedPackageVersions)' == ''">false</TemplateUsePinnedPackageVersions>
2424

2525
<!-- Apply pinned dependency versions if enabled. -->
26-
<TemplateRepoPackagesVersion Condition="'$(TemplateUsePinnedRepoPackagesVersion)' == 'true'">$(TemplatePinnedRepoPackagesVersion)</TemplateRepoPackagesVersion>
27-
<TemplateMicrosoftEntityFrameworkCoreSqliteVersion Condition="'$(TemplateUsePinnedMicrosoftEntityFrameworkCoreSqliteVersion)' == 'true'">$(TemplatePinnedMicrosoftEntityFrameworkCoreSqliteVersion)</TemplateMicrosoftEntityFrameworkCoreSqliteVersion>
26+
<TemplateRepoPackagesVersion Condition="'$(TemplateUsePinnedPackageVersions)' == 'true'">$(TemplatePinnedRepoPackagesVersion)</TemplateRepoPackagesVersion>
27+
<TemplateRepoAIPackagesVersion Condition="'$(TemplateUsePinnedPackageVersions)' == 'true'">$(TemplatePinnedRepoAIPackagesVersion)</TemplateRepoAIPackagesVersion>
28+
<TemplateMicrosoftEntityFrameworkCoreSqliteVersion Condition="'$(TemplateUsePinnedPackageVersions)' == 'true'">$(TemplatePinnedMicrosoftEntityFrameworkCoreSqliteVersion)</TemplateMicrosoftEntityFrameworkCoreSqliteVersion>
2829

2930
<!-- Fall back on default dependency versions if pinned versions were not applied. -->
3031
<TemplateRepoPackagesVersion Condition="'$(TemplateRepoPackagesVersion)' == ''">$(Version)</TemplateRepoPackagesVersion>
32+
<TemplateRepoAIPackagesVersion Condition="'$(TemplateRepoAIPackagesVersion)' == ''">$(Version)</TemplateRepoAIPackagesVersion>
3133
<TemplateMicrosoftEntityFrameworkCoreSqliteVersion Condition="'$(TemplateMicrosoftEntityFrameworkCoreSqliteVersion)' == ''">$(MicrosoftEntityFrameworkCoreSqliteVersion)</TemplateMicrosoftEntityFrameworkCoreSqliteVersion>
3234

33-
<_TemplateUsingJustBuiltPackages Condition="'$(TemplateRepoPackagesVersion)' == '$(Version)'">true</_TemplateUsingJustBuiltPackages>
35+
<_TemplateUsingJustBuiltPackages Condition="'$(TemplateRepoAIPackagesVersion)' == '$(Version)'">true</_TemplateUsingJustBuiltPackages>
3436

3537
<!-- Specify package version variables used in template content. -->
3638
<GeneratedContentProperties>
@@ -51,7 +53,7 @@
5153
CommunityToolkitAspireMicrosoftEntityFrameworkCoreSqliteVersion=$(CommunityToolkitAspireMicrosoftEntityFrameworkCoreSqliteVersion);
5254
CommunityToolkitAspireOllamaSharpVersion=$(CommunityToolkitAspireOllamaSharpVersion);
5355
MicrosoftEntityFrameworkCoreSqliteVersion=$(TemplateMicrosoftEntityFrameworkCoreSqliteVersion);
54-
MicrosoftExtensionsAIVersion=$(TemplateRepoPackagesVersion);
56+
MicrosoftExtensionsAIVersion=$(TemplateRepoAIPackagesVersion);
5557
MicrosoftExtensionsHttpResilienceVersion=$(TemplateRepoPackagesVersion);
5658
MicrosoftExtensionsServiceDiscoveryVersion=$(MicrosoftExtensionsServiceDiscoveryVersion);
5759
MicrosoftSemanticKernelConnectorsAzureAISearchVersion=$(MicrosoftSemanticKernelConnectorsAzureAISearchVersion);

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/Microsoft.Extensions.AI.Templates.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<PackageTags>dotnet-new;templates;ai</PackageTags>
88

99
<Stage>preview</Stage>
10+
<PreReleaseVersionIteration>2</PreReleaseVersionIteration>
1011
<Workstream>AI</Workstream>
1112
<MinCodeCoverage>0</MinCodeCoverage>
1213
<MinMutationScore>0</MinMutationScore>

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/.template.config/template.json

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@
2222
"A7D19173-F0AD-4A8D-B8EA-E12DE203E409"
2323
],
2424
"primaryOutputs": [
25+
{
26+
"path": "./README.md"
27+
},
2528
{
2629
"condition": "(!IsAspire)",
2730
"path": "./ChatWithCustomData-CSharp.csproj"
@@ -41,9 +44,6 @@
4144
{
4245
"condition": "(IsAspire)",
4346
"path": "./ChatWithCustomData-CSharp.Web/ChatWithCustomData-CSharp.Web.csproj"
44-
},
45-
{
46-
"path": "./README.md"
4747
}
4848
],
4949
"sources": [{
@@ -563,7 +563,7 @@
563563
"manualInstructions": [ ],
564564
"actionId": "84C0DA21-51C8-4541-9940-6CA19AF04EE6",
565565
"args": {
566-
"files": "1"
566+
"files": "0"
567567
},
568568
"continueOnError": true
569569
}],

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.ServiceDefaults/Extensions.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,25 @@ public static TBuilder AddServiceDefaults<TBuilder>(this TBuilder builder) where
2525

2626
builder.Services.ConfigureHttpClientDefaults(http =>
2727
{
28+
#pragma warning disable EXTEXP0001 // RemoveAllResilienceHandlers is experimental
29+
http.RemoveAllResilienceHandlers();
30+
#pragma warning restore EXTEXP0001
31+
32+
#if (IsOllama)
33+
// Turn on resilience by default
34+
http.AddStandardResilienceHandler(config =>
35+
{
36+
// Extend the HTTP Client timeout for Ollama
37+
config.AttemptTimeout.Timeout = TimeSpan.FromMinutes(3);
38+
39+
// Must be at least double the AttemptTimeout to pass options validation
40+
config.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10);
41+
config.TotalRequestTimeout.Timeout = TimeSpan.FromMinutes(10);
42+
});
43+
#else
2844
// Turn on resilience by default
2945
http.AddStandardResilienceHandler();
46+
#endif
3047

3148
// Turn on service discovery by default
3249
http.AddServiceDiscovery();

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/Components/Layout/SurveyPrompt.razor

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
<div>
99
How well is this template working for you? Please take a
10-
<a target="_blank" href="https://aka.ms/dotnet-chat-template-survey">brief survey</a>
10+
<a target="_blank" href="https://aka.ms/dotnet-chat-templatePreview2-survey">brief survey</a>
1111
and tell us what you think.
1212
</div>
1313
</div>

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/Program.Aspire.cs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,8 +26,12 @@
2626
builder.AddOllamaApiClient("embeddings")
2727
.AddEmbeddingGenerator();
2828
#elif (IsAzureAiFoundry)
29-
#else // IsAzureOpenAI || IsOpenAI || IsGHModels
29+
#else // (IsOpenAI || IsAzureOpenAI || IsGHModels)
30+
#if (IsOpenAI)
31+
var openai = builder.AddOpenAIClient("openai");
32+
#else
3033
var openai = builder.AddAzureOpenAIClient("openai");
34+
#endif
3135
openai.AddChatClient("gpt-4o-mini")
3236
.UseFunctionInvocation()
3337
.UseOpenTelemetry(configure: c =>

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/Program.cs

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,6 @@
88
using Azure;
99
#if (UseManagedIdentity)
1010
using Azure.Identity;
11-
#else
12-
using System.ClientModel;
1311
#endif
1412
#endif
1513
#if (IsOllama)

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/ChatWithCustomData-CSharp.Web/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# AI Chat with Custom Data
22

3-
This project is an AI chat application that demonstrates how to chat with custom data using an AI language model. Please note that this template is currently in an early preview stage. If you have feedback, please take a [brief survey](https://aka.ms/dotnet-chat-template-survey).
3+
This project is an AI chat application that demonstrates how to chat with custom data using an AI language model. Please note that this template is currently in an early preview stage. If you have feedback, please take a [brief survey](https://aka.ms/dotnet-chat-templatePreview2-survey).
44

55
>[!NOTE]
66
> Before running this project you need to configure the API keys or endpoints for the providers you have chosen. See below for details specific to your choices.
@@ -158,7 +158,7 @@ To use Azure AI Search, you will need an Azure account and an Azure AI Search re
158158
### 1. Create an Azure AI Search Resource
159159
Follow the instructions in the [Azure portal](https://portal.azure.com/) to create an Azure AI Search resource. Note that there is a free tier for the service but it is not currently the default setting on the portal.
160160
161-
Note that if you previously used the same Azure AI Search resource with different model using this project name, you may need to delete your `$$VectorStoreIndexName$$` index using the [Azure portal](https://portal.azure.com/) first before continuing; otherwise, data ingestion may fail due to a vector dimension mismatch.
161+
Note that if you previously used the same Azure AI Search resource with different model using this project name, you may need to delete your `data-ChatWithCustomData-CSharp.Web-ingestion` index using the [Azure portal](https://portal.azure.com/) first before continuing; otherwise, data ingestion may fail due to a vector dimension mismatch.
162162
163163
#### ---#if (UseManagedIdentity)
164164
### 2. Configure Azure AI Search for Keyless Authentication

src/ProjectTemplates/Microsoft.Extensions.AI.Templates/src/ChatWithCustomData/README.Aspire.md

Lines changed: 32 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# AI Chat with Custom Data
22

3-
This project is an AI chat application that demonstrates how to chat with custom data using an AI language model. Please note that this template is currently in an early preview stage. If you have feedback, please take a [brief survey](https://aka.ms/dotnet-chat-template-survey).
3+
This project is an AI chat application that demonstrates how to chat with custom data using an AI language model. Please note that this template is currently in an early preview stage. If you have feedback, please take a [brief survey](https://aka.ms/dotnet-chat-templatePreview2-survey).
44

55
>[!NOTE]
66
> Before running this project you need to configure the API keys or endpoints for the providers you have chosen. See below for details specific to your choices.
@@ -9,6 +9,17 @@ This project is an AI chat application that demonstrates how to chat with custom
99
### Prerequisites
1010
To use Azure OpenAI or Azure AI Search, you need an Azure account. If you don't already have one, [create an Azure account](https://azure.microsoft.com/free/).
1111

12+
#### ---#endif
13+
#### ---#if (UseQdrant)
14+
### Known Issues
15+
16+
#### Errors After Updating to Aspire Version 9.2.0
17+
This project is not currently compatible with Aspire 9.2.0, and all Aspire package versions are set to 9.1.0. Updating [Aspire.Qdrant.Client](https://www.nuget.org/packages/Aspire.Qdrant.Client) to version 9.2.0 causes an incompatibility with [Microsoft.SemanticKernel.Connectors.Qdrant](https://www.nuget.org/packages/Microsoft.SemanticKernel.Connectors.Qdrant) where different versions of [Qdrant.Client](https://www.nuget.org/packages/Qdrant.Client) are required. Attempting to run the project with `Aspire.Qdrant.Client` version 9.2.0 will result in the following exception:
18+
19+
> System.MissingMethodException: Method not found: 'Qdrant.Client.Grpc.Vectors Qdrant.Client.Grpc.ScoredPoint.get_Vectors()'
20+
21+
Once a version of `Microsoft.SemanticKernel.Connectors.Qdrant` is published with a dependency on `Qdrant.Client` version `>= 1.13.0`, the Aspire packages can also be updated to version 9.2.0.
22+
1223
#### ---#endif
1324
# Configure the AI Model Provider
1425

@@ -66,28 +77,12 @@ dotnet user-secrets set ConnectionStrings:openai "Key=YOUR-API-KEY"
6677
#### ---#endif
6778
#### ---#if (IsOllama)
6879
## Setting up a local environment for Ollama
69-
This project is configured to run Ollama in a Docker container.
70-
71-
To get started, download, install, and run Docker Desktop from the [official website](https://www.docker.com/). Follow the installation instructions specific to your operating system.
72-
73-
The response time from Ollama depends on your GPU. If you find that default resilience timeout of 10 seconds used by .NET Aspire is timing out for the HTTP call from the web app to the Ollama service, you can update the web app's `Program.cs` to extend the timeout by adding the following below the line which reads `builder.AddServiceDefaults();`:
74-
```csharp
75-
// Extend the HTTP Client timeout for Ollama
76-
builder.Services.ConfigureHttpClientDefaults(http =>
77-
{
78-
#pragma warning disable EXTEXP0001
79-
http.RemoveAllResilienceHandlers();
80-
http.AddStandardResilienceHandler(config =>
81-
{
82-
config.AttemptTimeout.Timeout = TimeSpan.FromMinutes(3);
83-
config.CircuitBreaker.SamplingDuration = TimeSpan.FromMinutes(10); // must be at least double the AttemptTimeout to pass options validation
84-
config.TotalRequestTimeout.Timeout = TimeSpan.FromMinutes(10);
85-
});
86-
#pragma warning restore EXTEXP0001
87-
});
88-
```
80+
This project is configured to run Ollama in a Docker container. Docker Desktop must be installed and running for the project to run successfully. An Ollama container will automatically start when running the application.
81+
82+
Download, install, and run Docker Desktop from the [official website](https://www.docker.com/). Follow the installation instructions specific to your operating system.
8983

9084
Note: Ollama and Docker are excellent open source products, but are not maintained by Microsoft.
85+
9186
#### ---#endif
9287
#### ---#if (IsAzureOpenAI)
9388
## Using Azure OpenAI
@@ -133,7 +128,7 @@ To use Azure AI Search, you will need an Azure account and an Azure AI Search re
133128
### 1. Create an Azure AI Search Resource
134129
Follow the instructions in the [Azure portal](https://portal.azure.com/) to create an Azure AI Search resource. Note that there is a free tier for the service but it is not currently the default setting on the portal.
135130

136-
Note that if you previously used the same Azure AI Search resource with different model using this project name, you may need to delete your `$$VectorStoreIndexName$$` index using the [Azure portal](https://portal.azure.com/) first before continuing; otherwise, data ingestion may fail due to a vector dimension mismatch.
131+
Note that if you previously used the same Azure AI Search resource with different model using this project name, you may need to delete your `data-ChatWithCustomData-CSharp.Web-ingestion` index using the [Azure portal](https://portal.azure.com/) first before continuing; otherwise, data ingestion may fail due to a vector dimension mismatch.
137132

138133
### 3. Configure API Key and Endpoint
139134
Configure your Azure AI Search API key and endpoint for this project, using .NET User Secrets:
@@ -159,6 +154,15 @@ Note that if you previously used the same Azure AI Search resource with differen
159154

160155
Make sure to replace `YOUR-DEPLOYMENT-NAME` and `YOUR-API-KEY` with your actual Azure AI Search deployment name and key.
161156
#### ---#endif
157+
#### ---#if (UseQdrant)
158+
159+
## Setting up a local environment for Qdrant
160+
This project is configured to run Qdrant in a Docker container. Docker Desktop must be installed and running for the project to run successfully. A Qdrant container will automatically start when running the application.
161+
162+
Download, install, and run Docker Desktop from the [official website](https://www.docker.com/). Follow the installation instructions specific to your operating system.
163+
164+
Note: Qdrant and Docker are excellent open source products, but are not maintained by Microsoft.
165+
#### ---#endif
162166

163167
# Running the application
164168

@@ -174,6 +178,12 @@ Make sure to replace `YOUR-DEPLOYMENT-NAME` and `YOUR-API-KEY` with your actual
174178
3. Once installed, Open the `Program.cs` file in the ChatWithCustomData-CSharp.AppHost project.
175179
4. Run the project by clicking the "Run" button in the Debug view.
176180

181+
## Trust the localhost certificate
182+
183+
Several .NET Aspire templates include ASP.NET Core projects that are configured to use HTTPS by default. If this is the first time you're running the project, an exception might occur when loading the Aspire dashboard. This error can be resolved by trusting the self-signed development certificate with the .NET CLI.
184+
185+
See [Troubleshoot untrusted localhost certificate in .NET Aspire](https://learn.microsoft.com/dotnet/aspire/troubleshooting/untrusted-localhost-certificate) for more information.
186+
177187
# Learn More
178188
To learn more about development with .NET and AI, check out the following links:
179189

0 commit comments

Comments
 (0)