根据开发/生产环境不同的基本路径

d00*_*00d 3 razor asp.net-core blazor

我刚刚在我们的开发服务器上发布了一个 Blazor 应用程序来测试一切是否运行正常。我设置了服务器,以便我必须在如下地址下访问该应用程序:

serveraddress:8090/UserManagement
Run Code Online (Sandbox Code Playgroud)

在我的本地开发计算机上,我不需要 UserManagement 文件夹,我只需访问并直接重定向到我的页面。例如,我的索引页可以在

@page "/"
Run Code Online (Sandbox Code Playgroud)

在我的本地机器上。但是当我在开发服务器上运行该软件时,路径中应该添加一个额外的 /UserManagement 标签。我在服务器上将 ASPNETCORE_ENVIRONMENT 变量设置为“Development”,并尝试更改 _Hosts.cshtml 中的标记,如下所示:

<environment include="Development">
    <base href="~/UserManagement" />
</environment>
<environment include="Production">
    <base href="~/" />
 </environment>
Run Code Online (Sandbox Code Playgroud)

不幸的是,这不起作用,所有重定向都转到 / 而不是 /UserManagement/。任何想法?

d00*_*00d 5

好吧,我想我找到了解决方案。首先,我更改了基本 url,以便仅当找到开发环境变量时,才会使用基本 url /UserManagement:

_Hosts.cshtml:

<environment include="Development">
        <base href="/UserManagement/" />
    </environment>
    <environment exclude="Development">
        <base href="~/" />
    </environment>
Run Code Online (Sandbox Code Playgroud)

然后我将其添加到startup.cs配置方法的最开头:

app.UsePathBase("/UserManagement");
Run Code Online (Sandbox Code Playgroud)

但仅凭这一点仍然没有达到目的。问题是,我使用类似的 href 链接转发到另一个页面:

<a href="/CreateD5User" class="btn btn-success">New User</a>
Run Code Online (Sandbox Code Playgroud)

使用前导斜杠,UserManagement 目录不会被预先设置。但是,在删除像这样的前导斜杠之后,它起作用了并且添加了 /UserManagement/ 。

<a href="CreateD5User" class="btn btn-success">New User</a>
Run Code Online (Sandbox Code Playgroud)