【发布时间】:2021-12-24 20:25:43
【问题描述】:
我有一个 ASP.NET 4 站点,我的目标是创建一个新的托管 blazor Web 程序集应用程序,该应用程序在作为应用程序运行的 ASP.NET 4 站点的子目录中运行。我在本地创建了 blazor 应用程序并对其进行了测试,一切正常。我遵循了 App 基本路径文档中的所有说明。我什至设置了 --pathbase 命令 arg,并在 launchSettings.json 文件中将启动 url 更改为 app。从 VS 2022 和命令提示符开始,它在我的本地机器上运行良好。
然后我在 IIS 中获取现有站点并添加一个子应用程序。我更新了应用程序池以不使用托管代码。我在我的 blazor 应用程序中发布了服务器项目,并将其移动到从 IIS 子应用程序引用的目录中。 blazor webassembly 运行良好。站点加载,但没有任何服务器应用程序(控制器、api 端点)工作。源看起来像是在引用 app/fetchdata,但端点不存在。它返回 404 错误。此外,当您从浏览器 url 加载应用程序子目录(如 app/counter)中的任何辅助 URL 时,它会失败。当您从应用程序内导航时,它会起作用,但当您链接到页面时则不起作用。
客户
wwwroot/index.html
<base href="/app/" />
launchSettings.json
"commandName": "Project",
"commandLineArgs": "--pathbase=/app",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:7240;http://localhost:5240",
"launchUrl": "app",
服务器
Program.cs
var app = builder.Build();
app.UsePathBase("/app");
launchSettings.json
"commandName": "Project",
"dotnetRunMessages": true,
"launchBrowser": true,
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}",
"applicationUrl": "https://localhost:7240;http://localhost:5240",
"launchUrl": "app",
【问题讨论】: