<base href='' >
是client side technology,它指定当前文档中所有相对URL的基本URL。许多SPA框架,例如Angular,将使用此元素。
我必须将@page设置为“ / app / counter”
实际上,您不必,并且绝对不应该这样做。使用<base>
时,最重要的优点之一是允许我们创建应用程序而无需让组件知道基本URL 。
假设您已将基本href
从'/'更改为'/ app /',并且还更改了其他相对网址:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
<title>BlazorApp</title>
<base href="/app/" />
<link rel="stylesheet" href="/css/bootstrap/bootstrap.min.css" />
<link href="/css/site.css" rel="stylesheet" />
</head>
<body>
<app>
@(await Html.RenderComponentAsync<App>(RenderMode.ServerPrerendered))
</app>
<script src="/_framework/blazor.server.js"></script>
</body>
</html>
别忘了在默认Blazor
中心URL前面加上/app/
:
app.UseEndpoints(endpoints =>
{
endpoints.MapBlazorHub("/app/_blazor");
endpoints.MapFallbackToPage("/_Host");
});
仅此而已。根本不需要将路由从@page "/counter"
更改为@page "/app/counter"
。
演示
这是一个演示,我们不更改组件的@page
路线:
,
对于 Blazor WebAssembly ,您只需要处理index.html
。
当您将网站发布到生产环境中的某个子文件夹时(例如:yoursite.com/couch/web
),请将该<base href="/">
的代码代替放在head
标签内,并替换{{ 1}}和您自己的子:
"/couch/web/"
结果是<script type="text/javascript">
var appBase = document.createElement('base');
appBase.href = "/couch/web/";
if (window.location.href.indexOf("localhost") > -1)
{
appBase.href = "/";
}
document.head.appendChild(appBase);
</script>
在生产环境中自动生成,<base href="/couch/web/">
在从本地主机开发时自动生成。
后来,人们可以访问通过只读<base href="/">
设置的基本href。
,
我遇到了同样的问题,因为我需要在一台 Nginx 服务器下托管多个应用程序。
非常重要:您必须在 Startup.cs 中的 ApplicationBuilder 的任何其他配置之前设置 PathBase。要动态设置路径,它是从 appsettings 中读取的
public void Configure(IApplicationBuilder app,IWebHostEnvironment env)
{
app.UsePathBase(Configuration.GetValue<string>("PATH_BASE") ?? "/");
...
}
appsettings.json
{
...
"PATH_BASE": "/mycustompath",...
}
_Host.cshtml
<head>
<base href="~/" />
...
</head>
导航和资源的所有链接必须是相对的,例如
<script src="_framework/blazor.server.js"></script>
or
<script src="_framework/blazor.server.js"></script>
,
要使其完全正常工作,我必须结合Softlion修复程序
在startup.cs文件中,这也是必需的。它也必须是configure方法的第一行,否则会发生坏事
app.UsePathBase("/app");
这样,您的相对链接也将起作用。例如,我有一个登录页面的链接。
<a href="~/Login">Login</a>
-------------编辑其他信息-------
我刚刚发现西装外套对外套真的很挑剔。在IIS和Visual Studio中都会发生这种情况
<base href="/app/" />
app.UsePathBase("/app");
与
不同
<base href="/App/" />
app.UsePathBase("/App");
您必须将它们匹配起来。不仅您还必须使用相同的大小写导航到Web应用程序。
由于网址不相同,并且在javascript调试器中引发了问题,我提出了github问题
localhost:5001 / App
https://github.com/dotnet/aspnetcore/issues/23107
,
仅<base href='/app/' >
+ dotnet run --pathbase=/app
(来自there)
本文链接:https://www.f2er.com/3113793.html