/
githubmirror
/
aspnetcore
Обзор
Документация
Войти
/
githubmirror
/
aspnetcore
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/Components/test/testassets/Components.TestServer/HotReloadStartup.cs
64 строки
2 KB
Javier Calvarro Nelson
[Blazor] Replace Blazor WebAssembly DevServer with Gateway in templates (#66729)
19 май 2026, 20:45
Не верифицирован
19 май 2026, 20:45
b24ff65
Код
Авторство
О чём код?
// Licensed to the .NET Foundation under one or more agreements. // The .NET Foundation licenses this file to you under the MIT license. using System.Globalization; using System.Net.WebSockets; using Microsoft.AspNetCore.Components.HotReload; using Microsoft.AspNetCore.Http.Features; namespace TestServer; public class HotReloadStartup { public HotReloadStartup() { AppContext.SetSwitch("System.Reflection.Metadata.MetadataUpdater.IsSupported", true); } public void ConfigureServices(IServiceCollection services) { services.AddControllers(); services.AddRazorPages(); services.AddServerSideBlazor(); } public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var enUs = new CultureInfo("en-US"); CultureInfo.DefaultThreadCurrentCulture = enUs; CultureInfo.DefaultThreadCurrentUICulture = enUs; if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseBlazorFrameworkFiles(); app.UseStaticFiles(); app.UseRouting(); app.UseWebSockets(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); endpoints.MapBlazorHub().AddEndpointFilter(async (context, next) => { if (context.HttpContext.WebSockets.IsWebSocketRequest) { var currentFeature = context.HttpContext.Features.Get<IHttpWebSocketFeature>(); context.HttpContext.Features.Set<IHttpWebSocketFeature>(new ServerComponentsSocketFeature(currentFeature!)); } return await next(context); }); endpoints.MapFallbackToPage("/_ServerHost"); }); } private sealed class ServerComponentsSocketFeature(IHttpWebSocketFeature originalFeature) : IHttpWebSocketFeature { public bool IsWebSocketRequest => originalFeature.IsWebSocketRequest; public Task<WebSocket> AcceptAsync(WebSocketAcceptContext context) { context.DangerousEnableCompression = true; return originalFeature.AcceptAsync(context); } } }