Ale*_*lex 5 kestrel-http-server asp.net-core blazor blazor-webassembly
我在托管blazor wasm asp.net core hosted应用程序时遇到问题。该解决方案有 3 个项目:Client、Shared和Server。
当我运行命令时,dotnet publish --configuration Release它将库发布到解决方案中各自的文件夹,如下所示:
我假设由于该server项目正在引用client- 那么我托管应用程序的步骤如下:
WebWorkbench3\Server\bin\Release\net5.0\publish在 powershell 中打开dotnet .\WebWorkbench3.Server.dllhttps://localhost:5001/_framework/blazor.webassembly.js未加载的错误。wwwroot服务器应用程序中的文件夹内容,我们将看到以下内容:这解释了为什么显示错误。然而,我此时的问题 - 项目中的发布过程/配置是否应该负责将客户端的内容复制wwwroot到服务器的应用程序输出目录中?如果我们在 VisualStudio 中启动调试会话,那么我们将使用作为server启动点,因此项目应该知道在哪里查找文件blazor.webassembly.js。
那么为什么在发布过程中没有发生相同的过程呢?
注意:我能够通过手动复制客户端的wwwroot目录并将内容放入服务器的wwwroot目录来解决问题...但我不认为这就是服务应该如何工作?
编辑:我刚刚尝试在 IIS 中设置clientblazor 应用程序。它有效。有点儿。页面打开。但是当它尝试向服务器发出 REST GET 请求时 - 它使用相同的hostname:port组合。因此,如果我的应用程序托管在上面mysite.local:50001,那么对 API 的请求将类似于控制器名称和操作名称在mysite.local:50001/data/loadall哪里。所以基本上客户端使用与服务器相同的基地址。问题是我无法启动服务器与客户端位于同一端口!在尝试这样做时 - 您将看到以下输出:
dataloadall
所以基本上我有和以前一样的问题 - 如何托管在客户端和服务器之间分配的 wasm 应用程序?我很确定我可以通过强制客户端使用非标准服务器端口并server在该端口上提供该部分来使其工作。但是,我相信当前配置(blazor 中的默认配置)应该有一个原因template) 是以这种方式配置的,因此应该可以以某种方式运行该项目,而无需任何额外的更改。
好吧,这将是一个自我回答。不是在dotnet publish --configuration Release解决方案级别发布()应用程序,而是在项目级别发布。
..\repos\WebWorkbench3\WebWorkbench3..\repos\WebWorkbench3\WebWorkbench3\Server在一种情况下,编译器不会将_framework文件夹(可能还有其他一些文件)复制到wwwroot.. 正确发布服务器后,您可以通过使用dotnet .\WebWorkbench3.Server.dll命令提供服务来访问该应用程序。
| 归档时间: |
|
| 查看次数: |
2710 次 |
| 最近记录: |