【问题标题】:Deploy Blazor web application on file share在文件共享上部署 Blazor Web 应用程序
【发布时间】:2019-04-07 04:55:19
【问题描述】:

Blazor 可用于创建客户端 C# 脚本网页。我在不同的地方(如MSDN Magazine article)读过,一旦构建,我可以将文件放在任何服务器上。我的理解是,也应该可以将工件放在文件共享上。

然而,这不是我观察到的。在我通过 Visual Studio 中的模板创建的 Blazor Web 应用程序的项目目录中运行 dotnet run 会使 kestrel 网络服务器启动,我可以通过指定的 http://localhost:port/ 地址访问工作网页。

当我在dotnet publish 的帮助下打开WebApplication1\bin\Debug\netstandard2.0\publish\WebApplication1\dist 路径下生成的index.html 时,我只在我的网络浏览器中看到一条“正在加载...”的文字。

我查看了index.html,乍一看,_framework/blazor.webassembly.js 的路径与目录结构相匹配。问题在哪里?

【问题讨论】:

  • 一旦你使用 dotnet publish 并且只看到“正在加载...”检查你的 js 控制台。由于某些文件丢失,您会发现一些错误。您将需要重新定位这些文件。这就是我前一段时间修复这个问题的方法,不记得确切的修复方法

标签: blazor


【解决方案1】:

你说:

当我在 dotnet publish 的帮助下打开在 WebApplication1\bin\Debug\netstandard2.0\publish\WebApplication1\dist 路径下生成的 index.html 时,我只在我的网络浏览器。

这是因为 Blazor 期望在根路径上定位 dll。我的意思是,如果您将 dist 的内容复制到 Web 服务器的根目录上,一切都会正常工作,但如果您将其复制到根目录的“子文件夹”上,则一切正常。

如果你想从路径(而不是根目录)提供文件,那么你应该设置app base path我的意思是,改变:

<base href="/" /> 

<base href="/your_path/" />

index.html 页面上。

来自文档:

应用基本路径是服务器上的虚拟应用根路径。例如,位于/CoolBlazorApp/ 的虚拟文件夹中的Contoso 服务器上的应用程序可通过https://www.contoso.com/CoolBlazorApp 访问,并且具有/CoolBlazorApp/ 的虚拟基路径。

【讨论】:

  • 这是否意味着 Blazor 客户端应用程序也可以从文件夹运行(没有任何 Web 服务器).. 请澄清。谢谢。
  • @DeepakShaw。如果您的应用程序不在 url 路径的根目录下运行,您需要设置 base。例如,BlazorConfirmhttps://ctrl-alt-d.github.io/BlazorConfirm/ 而不是 https://ctrl-alt-d.github.io/ 上运行。这是您问题的答案?
【解决方案2】:

我使用文件夹上的端口号启动了一个 HTTP 服务器,并且该应用程序在使用http://localhost:4565/ 之类的 URL 时运行良好。使用this HTTP server code。但总的来说,任何 HTTP 服务器都可以正常工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    • 1970-01-01
    相关资源
    最近更新 更多