gpt4 book ai didi

blazor - 如何更改 blazor wasm 应用程序的基本 URL

转载 作者:行者123 更新时间:2023-12-04 11:28:50 25 4
gpt4 key购买 nike

为 blazor wasm 托管应用程序生成的模板的基本 URL 以“/”开头(即,https://localhost:5001/ 用于本地开发或 https://www.domain-name.xyz/ 部署时。)我需要将此基本 URL 改为“/app”,即, ( https://localhost:5001/app ) 或 ( https://www.domain-name.xyz/app )。
文档( herehere )说我必须更改 <base /> 中的基本 URL index.html 中的标签:<base href="/app/" />并使用命令行参数 --pathbase在本地开发时:dotnet run --pathbase=/app我这样做了,并且没有对模板进行任何其他更改。
然而,这对我不起作用。我只是在应用程序的所有文件中找不到 404。
本期here说我还需要通过将“/app”传递给 UseBlazorFrameworkFiles 来更改 Blazor 文件的公开位置:app.UseBlazorFrameworkFiles("/app")这也不能解决我的问题。
任何人都可以提供有关如何实现这一目标并保证有效的分步指导。

最佳答案

您快到了。我不确定你对根站点做了什么,所以我添加了一个简单的登录页面,其中包含一个指向 WASM SPA 的链接。这是一套完整的说明。

  • host.html - 将 base 更改为 <base href="/app/" /> .这将确保所有 @Page SPA 中的指令以 app 为前缀。您需要尾随 / .
  • host.html - 将脚本引用更改为 <script src="/app/_framework/blazor.webassembly.js"></script> .如果您托管单个 WASM SPA,则无需更改它就可以逃脱。实验。
  • WASM 项目文件添加 StaticWebAssetBasePath .这将使用正确的路径设置构建。

  •   <PropertyGroup>
    <StaticWebAssetBasePath>app</StaticWebAssetBasePath>
    <TargetFramework>net5.0</TargetFramework>
    </PropertyGroup>
  • 更新 Startup在Server项目中,为mywebsite/app添加一个新的中间件路径

  • public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
    if (env.IsDevelopment())
    {
    app.UseDeveloperExceptionPage();
    app.UseWebAssemblyDebugging();
    }
    else
    {
    app.UseExceptionHandler("/Error");
    // 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.MapWhen(ctx => ctx.Request.Path.StartsWithSegments("/app"), first =>
    {
    first.UseBlazorFrameworkFiles("/app");
    first.UseStaticFiles();

    first.UseRouting();
    first.UseEndpoints(endpoints =>
    {
    endpoints.MapControllers();
    endpoints.MapFallbackToFile("app/{*path:nonfile}", "app/index.html");
    });
    });

    app.UseRouting();

    app.UseEndpoints(endpoints =>
    {
    endpoints.MapRazorPages();
    endpoints.MapControllers();
    // endpoints.MapFallbackToFile("_index.cshtml");
    endpoints.MapFallbackToPage("/_Index");
    });
    }
    我在根站点中添加了一个默认登录页面 - _Index.cshtml
    @page "/"
    @model WebApplication2.Server.Pages._IndexModel
    <h3>Hello App</h3>
    <div><a href="/app">App WASM SPA</a></div>
    @{
    }
    注意 FetchData 将无法工作,直到您更新 Controller url
    forecasts = await Http.GetFromJsonAsync<WeatherForecast[]>("/WeatherForecast");
    您还可以将 WASM wwwroot 移动到根目录中,并在 _App.cshtml 处添加启动页面以启动 SPA。
    有关更多信息,请访问 Github 站点 here by Javier Nelson以及我写的关于如何在同一网站上托管多个 SPA 的文章 here使用 Github repo 。

    关于blazor - 如何更改 blazor wasm 应用程序的基本 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66862350/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com