Giter Site home page Giter Site logo

blazor-samples's Introduction

dotnet/dotnet - Home of the .NET VMR

This repository is a Virtual Monolithic Repository (VMR) which includes all the source code and infrastructure needed to build the .NET SDK.

What this means:

  • Monolithic - a join of multiple repositories that make up the whole product, such as dotnet/runtime or dotnet/sdk.
  • Virtual - a mirror (not replacement) of product repos where sources from those repositories are synchronized into.

In the VMR, you can find:

Just like the development repositories, the VMR will have a release branch for every feature band (e.g. release/8.0.1xx). Similarly, VMR's main branch will follow main branches of product repositories (see Synchronization Based on Declared Dependencies).

More in-depth documentation about the VMR can be found in VMR Design And Operation. See also dotnet/source-build for more information about our whole-product source-build.

Goals

  • The main purpose of the dotnet/dotnet repository is to have all source code necessary to build the .NET product available in one repository and identified by a single commit.
  • The VMR also aims to become the place from which we release and service future versions of .NET to reduce the complexity of the product construction process. This should allow our partners and and 3rd parties to easily build, test and modify .NET using their custom infrastructure as well as make the process available to the community.
  • Lastly, we hope to solve other problems that the current multi-repo setup brings:
    • Enable the standard down-/up-stream open-source model.
    • Fulfill requirements of .NET distro builders such as RedHat or Canonical to natively include .NET in their distribution repositories.
    • Simplify scenarios such as client-run testing of bug fixes and improvements. The build should work in an offline environment too for certain platforms.
    • Enable developers to make and test changes spanning multiple repositories.
    • More efficient pipeline for security fixes during the CVE pre-disclosure process.

We will achieve these goals while keeping active coding work in the separate repos where it happens today. For example: ASP.NET features will continue to be developed in dotnet/aspnetcore and CLR features will be continue to be developed in dotnet/runtime. Each of these repos have their own distinct communities and processes, and aggregating development into a true mono-repo would work against that. Hence, the "virtual" monolithic repo: the VMR gives us the simplicity of a mono-repo for building and servicing the product, while active development of components of that product stays in its various existing repos. The day to day experience for typical contributors will not change.

Limitations

This is a work-in-progress. There are considerable limitations to what is possible at the moment. For an extensive list of current limitations, please see Temporary Mechanics.
See the Unified Build roadmap for more details.

Supported platforms

  • 8.0
    • source-build configuration on Linux
  • 9.0+ (WIP)
    • source-build configuration on Linux
    • non-source-build configuration on Linux, Mac, and Windows

For the latest information about Source-Build support for new .NET versions, please check our GitHub Discussions page for announcements.

Code flow

For the time being, the source code only flows one way - from the development repos into the VMR. More details on this process:

We expect the code flow to start working both ways in the .NET 9 timeframe. See the Unified Build roadmap for more details.

Contribution

At this time, the VMR will not accept any changes and is a read-only mirror of the development repositories only. Please, make the changes in the respective development repositories (e.g., dotnet/runtime or dotnet/sdk) and they will get synchronized into the VMR automatically.

Dev instructions

Please note that this repository is a work-in-progress and there are some usability issues connected to this. These can be nuisances such as some checked-in files getting modified by the build itself and similar. For the latest information about Source-Build support, please watch for announcements posted on our GitHub Discussions page.

Prerequisites

The dependencies for building can be found here. In case you don't want to / cannot prepare your environment per the requirements, consider using Docker.

Building

  1. Clone the repository

    git clone https://github.com/dotnet/dotnet dotnet-dotnet
    cd dotnet-dotnet
  2. Build the .NET SDK

    Choose one of the following build modes:

    • Microsoft based build

      For Unix:

      ./build.sh --clean-while-building

      For Windows:

      .\build.cmd -cleanWhileBuilding
    • Building from source

      # Prep the source to build on your distro.
      # This downloads a .NET SDK and a number of .NET packages needed to build .NET from source.
      ./prep-source-build.sh
      
      # Build the .NET SDK
      ./build.sh -sb --clean-while-building

    The resulting SDK is placed at artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].tar.gz (for Unix) or artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].zip (for Windows).

  3. (Optional) Unpack and install the .NET SDK

    For Unix:

    mkdir -p $HOME/dotnet
    tar zxf artifacts/assets/Release/dotnet-sdk-9.0.100-[your-RID].tar.gz -C $HOME/dotnet
    ln -s $HOME/dotnet/dotnet /usr/bin/dotnet

    For Windows:

    mkdir %userprofile%\dotnet
    tar -xf artifacts/assets/Release/dotnet-sdk-9.0.100-[your RID].zip -C %userprofile%\dotnet
    set "PATH=%userprofile%\dotnet;%PATH%"

    To test your built SDK, run the following:

    dotnet --info

Note

Run ./build.sh --help (for Unix) or .\build.cmd -help (for Windows) to see more information about supported build options.

Building using Docker

You can also build the repository using a Docker image which has the required prerequisites inside. The example below creates a Docker volume named vmr and clones and builds the VMR there.

docker run --rm -it -v vmr:/vmr -w /vmr mcr.microsoft.com/dotnet-buildtools/prereqs:centos-stream8
git clone https://github.com/dotnet/dotnet .

# - Microsoft based build
./build.sh --clean-while-building

# - Building from source
./prep-source-build.sh && ./build.sh -sb --clean-while-building

mkdir -p $HOME/.dotnet
tar -zxf artifacts/assets/Release/dotnet-sdk-9.0.100-centos.8-x64.tar.gz -C $HOME/.dotnet
ln -s $HOME/.dotnet/dotnet /usr/bin/dotnet

Codespaces

You can also utilize GitHub Codespaces where you can find preset containers in this repository.

Building from released sources

You can also build from sources (and not from a context of a git repository), such as the ones you can acquire from a dotnet/dotnet release. In this case, you need to provide additional information which includes the original repository and commit hash the code was built from so that the SDK can provide a better debugging experience (think the Step into.. functionality). Usually, this means the dotnet/dotnet repository together with the commit the release tag is connected to.

In practice, this means that when calling the main build script, you need to provide additional arguments when building outside of a context of a git repository.
Alternatively, you can also provide a manifest file where this information can be read from. This file (release.json) can be found attached with the dotnet/dotnet release.

Synchronizing code into the VMR

Sometimes you want to make a change in a repository and test that change in the VMR. You could of course make the change in the VMR directly (locally, as the VMR is read-only for now) but in case it's already available in your repository, you can synchronize it into the VMR (again locally).

To do this, you can either start a dotnet/dotnet Codespace - you will see instructions right after it starts. Alternatively, you can clone the repository locally and use the vmr-sync.sh or vmr-sync.ps1 script to pull your changes in. Please refer to the documentation in the script for more details.

List of components

The full list of components synchronized into the VMR is here (Components.md).

The repository also contains a JSON manifest listing all components in a machine-readable format.

Filing Issues

This repo does not accept issues as of now. Please file issues to the appropriate development repos. For issues with the VMR itself, please use the source-build repository.

Useful Links

.NET Foundation

.NET Runtime is a .NET Foundation project.

License

.NET is licensed under the MIT license.

blazor-samples's People

Contributors

alerinos avatar damienbod avatar guardrex avatar hakenr avatar halter73 avatar jeremylikness avatar jongalloway avatar livioalves avatar mikeirvingweb avatar nateduff avatar nivomi avatar nwoolls avatar ostomachion avatar rahul-k-saini avatar rick-anderson avatar sguryev avatar wallymathieu avatar ymsodev avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

blazor-samples's Issues

SignalR in BlazorWebAppOidcBff

Describe the issue
I use the BlazorWebAppOidcBff as template.

In short i have in the minimalApi a notification hub (signalr hub) and i want to consume the notifications from the BlazorWebAppOidc.Client project.

This is what i've tried so far:

//BlazorWebAppOidc project:
app.MapForwarder("/notificationhub/{**catch-all}", "https://localhost:7188", transformer =>
{
    transformer.AddRequestTransform(async transformContext =>
    {
       // add access_token to uri as query parameter
        var accessToken = await transformContext.HttpContext.GetAccessTokenAsync();
        var request = transformContext.HttpContext.Request;
        var url = transformContext.DestinationPrefix + request.Path.Value + request.QueryString.Value + $"&access_token={accessToken}";
        var uriBuilder = new UriBuilder(url);
        transformContext.ProxyRequest.RequestUri = uriBuilder.Uri;
    });
}).RequireAuthorization();
// BlazorWebAppOidc.Client project
// Component 
`@rendermode InteractiveAuto`
protected override async Task OnInitializedAsync()
{
    _hubConnection = new HubConnectionBuilder()            
        .WithUrl("https://localhost:7129/notificationhub")  // blazor webapp host, it should be transformed into the minimal api's host via yarp in the MapForwarder method
        .Build();
    _hubConnection.On<string>("ReceiveNotification", HandleMessage);
    await _hubConnection.StartAsync();
}
// minimalApi project
// Service registration
services.AddAuthentication("Bearer")
     .AddJwtBearer("Bearer", options =>
     {
         options.Authority = configuration["identityServer:authority"];

         options.TokenValidationParameters = new TokenValidationParameters
         {
             ValidateAudience = false
         };

         options.Events = new JwtBearerEvents
         {
             OnMessageReceived = context =>
             {
                 var accessToken = context.Request.Query["access_token"];

                 // If the request is for our hub
                 var path = context.HttpContext.Request.Path;
                 if (!string.IsNullOrEmpty(accessToken) &&
                     (path.StartsWithSegments("/notificationhub")))
                 {
                     // Read the token out of the query string
                     context.Token = accessToken;
                 }
                 return Task.CompletedTask;
             }
         };
     });
 // Application Pipeline
 app.MapHub<NotificationHub>("/notificationHub").RequireAuthorization(AuthorizationPolicies.ApiScope);

I tried this approach after reading the docs about signalr authentication.

With this setup the first time the component renders everything works as expected but if i refresh the page i get this error:

System.Text.Json.JsonReaderException: '<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan1 bytes) at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker) at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte first) at System.Text.Json.Utf8JsonReader.ReadSingleSegment() at System.Text.Json.Utf8JsonReader.Read() at Microsoft.AspNetCore.Internal.SystemTextJsonExtensions.CheckRead(Utf8JsonReader& reader) at Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.ParseResponse(ReadOnlySpan1 content)

First of all Is this approach optimal or i am doing something wrong? In general what is the best approach for handling signalr authentication when the hub is located in the remote api and we use the bff pattern?

.NET Version
.NET 8


Issue Details

Do not edit this section. It is required for issue processing.

Change hardcoded CSS link to assembly name in _Host.cshtml

When someone wants to rename a project, linked CSS still has the old name, so it will not work.

To Reproduce
Steps to reproduce the behavior:

  1. Rename (any selected) project using Visual Studio
  2. Open Pages/_Host.cshtml
  3. See old CSS link
  4. (optional) Launch the website and see that the main CSS isn`t work

Expected behavior
CSS link will change on project renaming.

Screenshots
image

Proposed solution
I propose changing a hardcoded project name to:
<link href="@(typeof(App).Assembly.GetName().Name).styles.css" rel="stylesheet" />
image

.NET Version
Any.


Issue Details

Do not edit this section. It is required for issue processing.

Remove NavMenu.razor

Remove Shared/build-a-blazor-app/NavMenu.razor ... I'm inlining it into the tutorial.

8.0 - BlazorWebAppOidcBff - Missing Reference

Describe the issue

Build Error: The type or namespace name 'Projects' could not be found when running Aspire AppHost project in new sample OIDC-BFF app

To Reproduce

Steps to reproduce the behavior:

  1. Clone 8.0/BlazorWebAppOidcBff project
  2. Open Solution in VS 2022 (Latest Stable - Version 17.9.3)
  3. Click debug on the Aspire.AppHost project

Expected behavior

App should run

Actual Behaviour

Build Error:
Error | CS0246 | The type or namespace name 'Projects' could not be found (are you missing a using directive or an assembly reference?) | Aspire.AppHost |

Additional context

Uncertain how to reference the projects in the Aspire AppHost.


Issue Details

Do not edit this section. It is required for issue processing.

NIT update to Notification.razor example

I want to change a UI feedback line in the example ...

- <span>Awaiting first notification</span>
+ <span>Awaiting notification</span>

... just because if you navigate away and back, it's not so much the "first" notification ... it's just the first since the component loads. I think it can just say that it's awaiting notification.

OfflineSupport for BlazorWebAssemblyStandaloneWithIdentity

Describe the issue
Running the sample BlazorWebAssemblyStandaloneWithIdentity (Core 8.0) works fine. But once the wasm is installed and then started without an internet connection (alternatively disconnect from internet after the wasm start and do a browser refresh afterwards) it is not possible to work with it anymore.
In order to have the wasm with full offline support, I think something like the PersistentAuthenticationStateProvider and a LocalStore is required (as in the example https://github.com/SteveSandersonMS/CarChecker, but unfortunately it is .Net Core 3.2).
Could you please extend the BlazorWebAssemblyStandaloneWithIdentity sample to be functional when internet connection is broken (maybe combining CookieAuthenticationStateProvider with PersistentAuthenticationStateProvider from the above mentioned example) or describe what steps need to be done to get this work?

To Reproduce
Steps to reproduce the behavior:

  1. Start sample BlazorWebAssemblyStandaloneWithIdentity
  2. Login with an account
  3. Close internet connection (in Browser Developer Tools switch to offline)
  4. hit F5 for a refresh

Expected behavior
Wasm in offline mode continues to function using the AuthenticationState it previously got from login in online mode.

Screenshots
If applicable, add screenshots to help explain your issue.

Additional context
Add any other context about the issue here.

.NET Version
Output of dotnet --info.
.NET SDK:
Version: 8.0.101
Commit: 6eceda187b
Workload version: 8.0.100-manifests.9297b15b

Laufzeitumgebung:
OS Name: Windows
OS Version: 10.0.22621
OS Platform: Windows
RID: win-x64
Base Path: C:\Program Files\dotnet\sdk\8.0.101\

Installierte .NET-Workloads:
Workload version: 8.0.100-manifests.9297b15b
[android]
Installationsquelle: VS 17.8.34408.163
Manifestversion: 34.0.43/8.0.100
Manifestpfad: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.android\34.0.43\WorkloadManifest.json
Installationstyp: Msi

[ios]
Installationsquelle: VS 17.8.34408.163
Manifestversion: 17.0.8478/8.0.100
Manifestpfad: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.ios\17.0.8478\WorkloadManifest.json
Installationstyp: Msi

[maui-windows]
Installationsquelle: VS 17.8.34408.163
Manifestversion: 8.0.3/8.0.100
Manifestpfad: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.maui\8.0.3\WorkloadManifest.json
Installationstyp: Msi

[maccatalyst]
Installationsquelle: VS 17.8.34408.163
Manifestversion: 17.0.8478/8.0.100
Manifestpfad: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.maccatalyst\17.0.8478\WorkloadManifest.json
Installationstyp: Msi

Host:
Version: 8.0.1
Architecture: x64
Commit: bf5e279d92

.NET SDKs installed:
5.0.413 [C:\Program Files\dotnet\sdk]
8.0.100 [C:\Program Files\dotnet\sdk]
8.0.101 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
Microsoft.AspNetCore.App 3.1.30 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.10 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 3.1.30 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.10 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 3.1.30 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.10 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.15 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]

Issue Details

Do not edit this section. It is required for issue processing.

NSwag for WASM+Identity

We scrapped Swashbuckle, but NSwag looks good as a replacement ...

<PackageReference Include="NSwag.AspNetCore" Version="14.0.2" />
builder.Services.AddOpenApiDocument();

In the Dev environment ...

app.UseOpenApi();
app.UseSwaggerUi();

BlazorWebAssemblyStandaloneWithIdentity - AddRoles

Should this sample work fine with .AddRoles?

I've downloaded the sample and changed to a persistent DbContext, registered a user and then added the relevant records to AspNetRoles and AspNetUserRoles, but when I log in on the WASM app I don't get any role claims.. The cookie increases in size by ~100 chars so my guess is the API responding with a cookie that contains the role claim but the WASM app doesnt see it for some reason.

builder.Services.AddDbContext<AppDbContext>(options =>
{
    options.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Testdb;Trusted_Connection=True", assembly => assembly.MigrationsAssembly(typeof(AppDbContext).Assembly.FullName));
});

// add identity and opt-in to endpoints
builder.Services.AddIdentityCore<AppUser>()
    .AddRoles<IdentityRole>()
    .AddEntityFrameworkStores<AppDbContext>()
    .AddApiEndpoints();

image

Should they be sent in the response to manage/info?

image


Issue Details

Do not edit this section. It is required for issue processing.

JavaScript interop

hey Luke,
there is new JavaScript interop available for .Net 7.

I created simple demo to show the new JavaScript interop in Blazor.
I'm not sure if you want to adopt it as is, but perhaps you could have look at it and extend one of the existing sample apps.

https://github.com/pavelsavara/blazor-wasm-hands-pose

There is also non-Blazor demo which has more complex interop logic
https://github.com/pavelsavara/dotnet-wasm-todo-mvc

(also please ping me on IM to discuss how to collaborate on further docs about the feature, thank you)

Request a sample BlazorWebApp WithIdentity

Describe the issue
Dear @guardrex , We are grateful to already have BlazorWebAssemblyStandaloneWithIdentity (Backend and BlazorWasmAuth)
Please kindly request a sample BlazorWebApp WithIdentity (Backend and BlazorWebAppAuth)
Thank you

Issue Details

Do not edit this section. It is required for issue processing.

Oidc sample double renders full page

Description

As a result of Routes.razor containing both AuthorizeRouteView & RouteView the full page is rendered twice on the screen so you can scroll down to see the duplicate page:
image

By using only AuthorizeRouteView and removing RouteView the page is rendered only once, regardless of render mode or user authorization state.

Expected Behavior

Page is only rendered once

.NET Version

8

Logout not Working (BlazorWebAssemblyStandaloneWithIdentity)

Describe the issue
After register a new user and login the logout is not working. The screen is flickering and the user is not logged out.

To Reproduce
Steps to reproduce the behavior:

  1. Create a new project map with regarding projects (Backend and BlazorWasmAuth)
  2. Set both project as start projects
  3. Register a new user
  4. Login for new user
  5. Try to logout

Expected behavior
User should become logged out

.NET Version
8.0.100


Issue Details

Do not edit this section. It is required for issue processing.

Add docs reference info

Add docs sample reference info will allow it to show up in samples, which only has 1 thing in it today :( https://docs.microsoft.com/en-us/samples/browse/?expanded=dotnet&products=blazor

See: https://github.com/dotnet/EntityFramework.Docs/blob/main/samples/end2end/PlanetaryDocs/README.md
for example:

---
page_type: sample
description: "This repository is intended to showcase a full application that supports Create, Read, Update, and Delete operations (CRUD) using Blazor (Server), Entity Framework Core and Azure Cosmos DB."
languages:
- csharp
products:
- dotnet-core
- ef-core
- blazor
- azure-cosmos-db
---

Sample links in ReadMe.md are broken

Describe the issue
The last two sample links are broken.

To Reproduce
Click the "Blazor Web App with OIDC and Aspire" sample link and you get a 404.
Click the "Blazor WebAssembly with ASP.NET Core Identity" sample link and you get the SignalR article (same as the second sample).

Expected behavior
Each link should lead to an article relevant to the sample.


Issue Details

Do not edit this section. It is required for issue processing.

Howto : .Net8 OIDC authenticated (Azure) SignalR with Blazor Server

Describe the issue
How do you correctly setup SignalR with authentication on Blazor Server? I created a test project based on the BlazorWebAppOidc:

https://github.com/njannink/BlazorServerAppOidcWithHub/tree/main

Fill in your OIDC + Azure SignalR details in the BlazorWebAppOidc/Program.cs file, or you can also turn off Azure SignalR to use the default SignalR hosting model. Everything is working fine when using the InteractiveAuto hosting model, but as soon as you switch to the InteractiveServer way the SignalR connection can no longer be established.

If you then login and try to connect to the chat hub you get the following error:

System.IO.InvalidDataException: Invalid negotiation response received.
 ---> System.Text.Json.JsonReaderException: '<' is an invalid start of a value. LineNumber: 0 | BytePositionInLine: 0.
   at System.Text.Json.ThrowHelper.ThrowJsonReaderException(Utf8JsonReader& json, ExceptionResource resource, Byte nextByte, ReadOnlySpan`1 bytes)
   at System.Text.Json.Utf8JsonReader.ConsumeValue(Byte marker)
   at System.Text.Json.Utf8JsonReader.ReadFirstToken(Byte first)
   at System.Text.Json.Utf8JsonReader.ReadSingleSegment()
   at System.Text.Json.Utf8JsonReader.Read()
   at Microsoft.AspNetCore.Internal.SystemTextJsonExtensions.CheckRead(Utf8JsonReader& reader)
   at Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.ParseResponse(ReadOnlySpan`1 content)
   --- End of inner exception stack trace ---
   at Microsoft.AspNetCore.Http.Connections.NegotiateProtocol.ParseResponse(ReadOnlySpan`1 content)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.NegotiateAsync(Uri url, HttpClient httpClient, ILogger logger, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.GetNegotiationResponseAsync(Uri uri, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.SelectAndStartTransport(TransferFormat transferFormat, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsyncCore(TransferFormat transferFormat, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnection.StartAsync(TransferFormat transferFormat, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.Http.Connections.Client.HttpConnectionFactory.ConnectAsync(EndPoint endPoint, CancellationToken cancellationToken)
   at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncCore(CancellationToken cancellationToken)
   at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsyncInner(CancellationToken cancellationToken)
   at Microsoft.AspNetCore.SignalR.Client.HubConnection.StartAsync(CancellationToken cancellationToken)
   at BlazorWebAppOidc.Client.Pages.Chat.OnInitializedAsync() in D:\Projects\blazor\BlazorServerAppOidcWithHub\BlazorWebAppOidc.Client\Pages\Chat.razor:line 43
   at Microsoft.AspNetCore.Components.ComponentBase.RunInitAndSetParametersAsync()
   at Microsoft.AspNetCore.Components.RenderTree.Renderer.GetErrorHandledTask(Task taskToHandle, ComponentState owningComponentState)
Microsoft.AspNetCore.Components.Server.Circuits.CircuitHost: Error: Unhandled exception in circuit '80pb6dJz85Pl8JrsLdYsB0wQ26jpH6Mi-79i_fPlXZg'.

Any help would be greatly appreciated, since we won't be able to switch to Auto/WebAssembly mode anytime soon. I know there is a way to get the access_token from the HttpContext, but as soon as you use Azure SignalR the HttpContextAccessor.HttpContext returns null.


Issue Details

Do not edit this section. It is required for issue processing.

There is no registered service of type 'BlazorWebAppOidc.Client.Weather.IWeatherForecaster'

Describe the issue
Open url: https://localhost:5001/weather

To Reproduce
Steps to reproduce the behavior:

  1. Go to project BlazorWebAppOidc
  2. Press F5 to debug
  3. Open link: https://localhost:5001/weather
  4. See error

Expected behavior
An unhandled exception occurred while processing the request.
InvalidOperationException: Cannot provide a value for property 'WeatherForecaster' on type 'BlazorWebAppOidc.Client.Pages.Weather'. There is no registered service of type 'BlazorWebAppOidc.Client.Weather.IWeatherForecaster'.
Microsoft.AspNetCore.Components.ComponentFactory+<>c__DisplayClass9_0.g__Initialize|1(IServiceProvider serviceProvider, IComponent component)

Screenshots
image

Additional context
Add any other context about the issue here.

.NET Version
Output of dotnet --info.


Issue Details

Do not edit this section. It is required for issue processing.

CORS help

Describe the issue
Cloned and built the projects. Tested locally, everything works as expected.
Uploaded the Backend to a development server running Windows Server 2022 with IIS 10 .
Modified the Backend Url in appsettings.json

Run Frontend from my dev workstation (https://localhost:7171)
I am able to register a user, when I try to register a second time, it tell me the username is already taken. This indicates it is working as should.

When I try to login, I get a CORS error:

Access to fetch at 'https://mydevserverurl.com/manage/info' from origin 'https://localhost:7171' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource. If an opaque response serves your needs, set the request's mode to 'no-cors' to fetch the resource with CORS disabled.

I also get this error when the login page is accessed.

The only changes to the code that was made was on each appsettings.json files to change the BackEnd server url to https://mydevserverurl.com

Any help would be appreciated.
I am thinking that it has something to do with my running the front end on localhost and accessing the API from there.
If this is the case, how would one develop the front end and have the API deployed?


Issue Details

Do not edit this section. It is required for issue processing.

we can't upload the directory(folder) in InputFile component

Describe the issue
we cant upload the directory(folder) in InputFile component. while drag and drop the folder we get the folder name only in OnChange event, while upload the folder, sub files which is present in the folder need to upload

To Reproduce
Steps to reproduce the behavior:

  1. try to upload the folder or drag and drop the folder

Expected behavior
while upload the folder, sub files are need to upload

.NET Version
Output of dotnet 6 and 7.


Issue Details

my requirement sub files need to upload while upload the folder.

FileUpload4.razor is missing according to documentation page

Describe the issue
The page Pages/FileUpload4.razor is missing. It's decribed here. It should show a complete example of how to preview images, preferably multiple.

I can find FileUpload3.razor (which is the wrong version) in these three locations:

‎5.0/BlazorSample_Server/Pages/file-uploads/FileUpload3.razor
‎6.0/BlazorSample_Server/Pages/file-uploads/FileUpload3.razor
‎7.0/BlazorSample_Server/Pages/file-uploads/FileUpload3.razor

Issue Details

Do not edit this section. It is required for issue processing.

.NET 8 Blazor OIDC examples still using .NET 7 code base

Describe the issue
The examples of using Blazor with .NET 8, still seems to be using the old fashioned .NET 7 way, which isn't recommended by:
https://learn.microsoft.com/en-us/aspnet/core/migration/70-80?view=aspnetcore-8.0&tabs=visual-studio#migrate-the-cascadingauthenticationstate-component-to-cascading-authentication-state-services

For example:
https://github.com/dotnet/blazor-samples/blob/main/8.0/BlazorWebAppOidc/BlazorWebAppOidc.Client/Routes.razor
https://github.com/dotnet/blazor-samples/blob/main/8.0/BlazorWebAppOidcBff/BlazorWebAppOidc.Client/Routes.razor

It makes it really hard to figure out how we are supposed to be able to use Entra ID with the new way of using Blazor in .NET 8.

It boils down this this orignal issue:
dotnet/aspnetcore#51202

None of the suggested solutions in that issue really work properly, with who knows what security risks, when everyone has to reinvent some way of managing authentication/token, because there has been zero guidance from MS for anything but "individual accounts" in Blazor Web Apps for .NET 8.


Issue Details

Do not edit this section. It is required for issue processing.

Fix component params in EFCore sample

Whoooops! ... There was at least one param change 😈 that broke the app. I'll fix it up right now.

Ah! ... I thought it was a string-typed param, but it just turns out to be a casing problem with the find-'n-replace operation that I performed on the sample app.

ProductDetail.razor - does not display "Loading..." when ProductId parameter changes

[EDIT by guardrex to add the metadata]

@guardrex I'm not certain if this is an addition you'd consider for the sample code, but I believe it's important that the examples are accurate not just in the concepts they aim to demonstrate but also in embodying best practices for the other aspects they touch upon.

The ProductDetails.razor page, mentioned in handle-errors.md, employs the following code snippet to display the page's result or state:

@if (details != null)
{
<h2>@details.ProductName</h2>
<p>
@details.Description
<a href="@details.Url">Company Link</a>
</p>
}
else if (loadFailed)
{
<h1>Sorry, we could not load this product due to an error.</h1>
}
else
{
<h1>Loading...</h1>
}

However, when the ProductId parameter changes, the current implementation of OnParametersSetAsync() doesn't reset the details to null before fetching the repository data, resulting in the previous product details being displayed until the new one loads, instead of showing the "Loading..." indicator.

To ensure the "Loading..." indicator is shown, we should update OnParametersSetAsync() to:

protected override async Task OnParametersSetAsync()
{
    try
    {
        loadFailed = false;
        details = null; // Reset details to null to display the loading indicator
        details = await Product.GetProductByIdAsync(ProductId);
    }
    catch (Exception ex)
    {
        loadFailed = true;
        Logger.LogWarning(ex, "Failed to load product {ProductId}", ProductId);
    }
}

Anyway, I think the sample code for custom error handling could be simplified. Right now, there's a lot of extra detail, like the interface and implementation of the repository, that might distract from the main focus.

Page URL

https://learn.microsoft.com/en-us/aspnet/core/blazor/fundamentals/handle-errors?view=aspnetcore-8.0#lifecycle-methods

Content source URL

https://github.com/dotnet/AspNetCore.Docs/blob/main/aspnetcore/blazor/fundamentals/handle-errors.md

Document ID

66a0b1c2-c45c-98ca-9808-6f340a861c44

Article author

@guardrex

Blazor WASM + Dotnet API example

I wish there was an example on setting up a Blazor ahead-of-time compiled WASM project, with a .NET API.
With Angular, we get the spa.UseAngularCliServer(npmScript: "start"); - what is there for Blazor?

Style.css is not presented in blazor samples 8 for BlazorSignalRApp

Describe the issue
In new template of Blazor Server misses style.css file. As I see there is a link on file which is not exist. See screen one.

To Reproduce
Steps to reproduce the behavior:

  1. Create Blazor Web App with server rendering
  2. Run an application

Expected behavior
A 404 does not occur and the default style is running

Screenshots
image
image
image

Additional context
There is no additional context

.NET Version
Output of dotnet --info.
.NET SDK:
Version: 8.0.100
Commit: 57efcf1350
Workload version: 8.0.100-manifests.8d38d0cc

Runtime Environment:
OS Name: Windows
OS Version: 10.0.19045
OS Platform: Windows
RID: win-x64
Base Path: C:\Program Files\dotnet\sdk\8.0.100\

.NET workloads installed:
Workload version: 8.0.100-manifests.8d38d0cc
There are no installed workloads to display.

Host:
Version: 8.0.0
Architecture: x64
Commit: 5535e31a71

Issue Details

Do not edit this section. It is required for issue processing.

BlazorWebAssemblyStandaloneWithIdentity uses cookie auth but no antiforgerytoken

The BlazorWebAssemblyStandaloneWithIdentity sample uses a cookie to store the authentication token but I believe that this opens the site up to csrf attacks.

This is usually mitigated by using antiforgerytokens but I've found it difficult to apply this to the sample as the api and client run as different sites (although I may have just dome something wrong).

Is is right that antiforgery tokens should be used here or is there a reason it is not required?
If it is required will it be added to this sample or can someone point me in the right direction to get this working?

Drop shared layout file

The shared layout file is being removed from the layouts article, so drop the layout from all versions of the WASM and Server sample apps.

Shared/layouts/MainLayout.razor

... and remove the other one, which is also being dropped ...

layouts/App1.razor

Blazor database example's list page is reloaded when coming back from a details page

Describe the issue
In the BlazorServerDbContextExample sample, if I go back from item details page to the list, the list reloads. This makes that the list page would lose the previous state such as scroll position. This will annoy users if the list is long.

If there is a way to keep the list page view in the memory and do not reload the list page when coming back, please explain the way to implement that in the sample's documentation.

To Reproduce
Steps to reproduce the behavior:

  1. Run BlazorServerDbContextExample
  2. Make the window smaller so that a scroll bar would appear
  3. Scroll down to any item down below in the list
  4. Click the item
  5. Click [Back to Grid] or press the mouse back button or click the browser back button

Expected behavior
Going back the list view exactly where I was.

Screenshots
jxXoL

Additional context
Add any other context about the issue here.

.NET Version
6.0


Issue Details

Do not edit this section. It is required for issue processing.

Use of Deprecated Package

Describe the issue
In your new BlazorWebAssemblyStandaloneWithIdentity project, in the backend you appear to be using the now deprecated package
Microsoft.AspNetCore.Identity 2.2.0?

Am I missing something?

To Reproduce
Steps to reproduce the behavior:
Open project and look at dependancies.

Expected behavior
No deprecated dependancies

Screenshots
2023-12-08_16-06

Additional context
Add any other context about the issue here.

.NET Version
8.0


Issue Details

Do not edit this section. It is required for issue processing.

Test Issue 2

Describe the issue
A clear and concise description of what the issue is about.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your issue.

Additional context
Add any other context about the issue here.

.NET Version
Output of dotnet --info.


Issue Details

Do not edit this section. It is required for issue processing.

Adjust docs for Entra for Customers (preview)

Firstly, thanks for this demo :-)

I struggled for a long time to get this right...finally figured out the deltas and got it working with the applications authenticating against MS Entra Id for Customers (preview).

BlazorWebAppOidc (server) value changes in Program.cs:
oidcOptions.Scope.Add("api://efc9xxxx-xxxx-xxxx-xxxx-xxxxxxxx2d15/Weather.Get");
"efc9xxxx-xxxx-xxxx-xxxx-xxxxxxxx2d15" is the ClientId of the MinimalApiJwt App Registration

MinimalApiJwt value changes in Program.cs:
jwtOptions.Audience = "api://efc9xxxx-xxxx-xxxx-xxxx-xxxxxxxx2d15";
again "efc9xxxx-xxxx-xxxx-xxxx-xxxxxxxx2d15" is the ClientId of the WebAPI app registration

jwtOptions.Authority = "https://sts.windows.net/87dcxxxx-xxxx-xxxx-xxxx-xxxxxxxx2c98/";
"87dcxxxx-xxxx-xxxx-xxxx-xxxxxxxx2c98" is the TenantId of the Entra for customers directory

Notice the different value: https://sts.windows.net/... on the WebAPI side.
That part cost me so much time. Token kept getting rejected after I reviewed the docs repeatedly.
I finally discovered the iss: value was different in the token than the authority.

(someone that knew what they were doing probably would have identified it right away but dumb me didn't realize that iss: = authority)
Credit to this article for helping me identify the problem

Thanks again, looking forward to .Net 9 and new templates. Keep up the good work.

BlazorWebAssemblyStandaloneWithIdentity sample with Bearer Token instead cookie

Would be nice to have an example of the Webassembly standalone app that calls the backend API and logins with bearer tokens instead with cookie (like the most mobile apps do)

Like described in the documentation
https://learn.microsoft.com/en-us/aspnet/core/blazor/security/webassembly/standalone-with-identity?view=aspnetcore-8.0

In the backend I already changed
.AddIdentityCookies() with .AddBearerToken();

and in the frontend /login?useCookies=false instead true

But that is not enough and login doesn't work (register do)

Thanks

Do not edit this section. It is required for issue processing.

8.0 BlazorWebAppOidc IDX21323: RequireNonce is 'False'

Describe the issue
When running this blazor sample initially the authentication works well, but if you idle on the page (I'm assuming until the auth token needs to be refreshed) then you get this nonce error.

Since the error is pointing to the CookieOidcRefresher file I was wondering if I can get some direction on how to implement a fix for this.

To Reproduce

  1. Set up the sample project with proper Microsoft Entra
  2. Run the project
  3. Authenticate to the weather page
  4. Wait for the token to need to be refreshed
  5. Open the counter page
  6. See error

Expected behavior
I expect for the token to be refreshed in the background if it has expired.

Screenshots

Screenshot 2024-01-23 at 3 41 07 PM

Additional context
Instead of setting global render mode, I've implemented a per component render mode. However, I don't think that's part of the problem here.

.NET Version
Output of dotnet --info.
.NET SDK:
Version: 8.0.200-preview.23624.5
Commit: 8065b9770c
Workload version: 8.0.200-manifests.ba313bcd

Runtime Environment:
OS Name: Windows
OS Version: 10.0.19045
OS Platform: Windows
RID: win-x64
Base Path: C:\Program Files\dotnet\sdk\8.0.200-preview.23624.5\

.NET workloads installed:
Workload version: 8.0.200-manifests.ba313bcd
[aspire]
Installation Source: SDK 8.0.200-preview.23624, VS 17.9.34511.98
Manifest Version: 8.0.0-preview.2.23619.3/8.0.100
Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.sdk.aspire\8.0.0-preview.2.23619.3\WorkloadManifest.json
Install Type: Msi

[wasm-tools]
Installation Source: VS 17.8.34511.84, VS 17.9.34511.98
Manifest Version: 8.0.1/8.0.100
Manifest Path: C:\Program Files\dotnet\sdk-manifests\8.0.100\microsoft.net.workload.mono.toolchain.current\8.0.1\WorkloadManifest.json
Install Type: Msi

Host:
Version: 8.0.1
Architecture: x64
Commit: bf5e279d92

.NET SDKs installed:
6.0.418 [C:\Program Files\dotnet\sdk]
7.0.102 [C:\Program Files\dotnet\sdk]
8.0.101 [C:\Program Files\dotnet\sdk]
8.0.200-preview.23624.5 [C:\Program Files\dotnet\sdk]

.NET runtimes installed:
Microsoft.AspNetCore.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.2 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 7.0.15 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.AspNetCore.App 8.0.1 [C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App]
Microsoft.NETCore.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.2 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 7.0.15 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.NETCore.App 8.0.1 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App]
Microsoft.WindowsDesktop.App 6.0.26 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.2 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 7.0.15 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]
Microsoft.WindowsDesktop.App 8.0.1 [C:\Program Files\dotnet\shared\Microsoft.WindowsDesktop.App]

Other architectures found:
x86 [C:\Program Files (x86)\dotnet]
registered at [HKLM\SOFTWARE\dotnet\Setup\InstalledVersions\x86\InstallLocation]


Issue Details

Do not edit this section. It is required for issue processing.

Test issue

Describe the issue
A clear and concise description of what the issue is about.

To Reproduce
Steps to reproduce the behavior:

  1. Go to '...'
  2. Click on '....'
  3. Scroll down to '....'
  4. See error

Expected behavior
A clear and concise description of what you expected to happen.

Screenshots
If applicable, add screenshots to help explain your issue.

Additional context
Add any other context about the issue here.

.NET Version
Output of dotnet --info.

Using for generic list missing in DlTopicClasses.cs

Describe the issue
I get a build error because the DITopicClasses.cs file is missing a reference to System.Collections.Generic.

To Reproduce
Steps to reproduce the behavior:

  1. Build solution

Expected behavior
The application should build without errors.

Screenshots
If applicable, add screenshots to help explain your issue.

Additional context
Add any other context about the issue here.

.NET Version
Output of dotnet --info.


Issue Details

Do not edit this section. It is required for issue processing.

How to compile?

Hi,

How should I compile the project BlazorSample?

I get these errors during compilation:

Severity	Code	Description	Project	File	Line	Suppression State
Error (active)	CS0246	The type or namespace name 'ComponentMetadata' could not be found (are you missing a using directive or an assembly reference?)	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	34	
Error (active)	CS0246	The type or namespace name 'ComponentMetadata' could not be found (are you missing a using directive or an assembly reference?)	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	39	
Error (active)	CS0246	The type or namespace name 'ComponentMetadata' could not be found (are you missing a using directive or an assembly reference?)	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	47	
Error (active)	CS0246	The type or namespace name 'ComponentMetadata' could not be found (are you missing a using directive or an assembly reference?)	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	51	
Error (active)	CS0246	The type or namespace name 'ComponentMetadata' could not be found (are you missing a using directive or an assembly reference?)	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	55	
Error (active)	CS0103	The name 'RocketLabWithWindowSeat' does not exist in the current context	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	67	
Error (active)	CS0103	The name 'APP' does not exist in the current context	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	75	
Error (active)	CS1073	Unexpected token 'NAMESPACE'	BlazorSample	C:\yi\blazor\ms-blazor-samples\6.0\BlazorSample_Server\Pages\dynamiccomponent\DynamicComponentExample2.razor	75	

Many thanks,
Yi

Is BlazorWebAssemblyStandaloneWithIdentity safe to deploy to Azure App Service + Static Web App?

After going through the BlazorWebAssemblyStandaloneWithIdentity example, which works great, I want to make sure ASP.NET Core Identity with Cookie Authentication is still the right choice after deploying this to Azure.

Specifically, I have deployed my apps, following the approach in this example, like this:

The apps work mostly without issues in Azure, but I did have to add this to my API for cookies to work properly:

builder.Services.ConfigureApplicationCookie(options =>
{
    options.Cookie.SameSite = SameSiteMode.None;
    options.Cookie.SecurePolicy = CookieSecurePolicy.Always;
});

I want to make sure ASP.NET Core Identity is the recommended approach in this scenario, as opposed to using an OIDC server. I went through the guidance on this official doc and after following this diagram:

image

...it is not clear to me if my Blazor WASM standalone app, which lives in Azure Static Web App, should be classified as external or internal, which is the first decision point. I own both the API and the Blazor app, but it's not like they live in the same domain (given the different URLs provided by App Service and Static App).

Could you please clarify if the approach in the BlazorWebAssemblyStandaloneWithIdentity sample is recommended when deploying to Azure App Service + Azure Static Web App?


Issue Details

Do not edit this section. It is required for issue processing.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.