为什么我的blazor页面在github页面上导致404错误?

时间:2019-06-22 22:12:39

标签: c# http-status-code-404 github-pages blazor

我正在尝试为我的Blazor项目建立一个Github Pages网站。即使有了全新的blazor项目,我也没有成功。按照人们在this question上给出的指示,我在未修改的新项目中始终遇到404错误。

您可以在https://billybillyjim.github.io处找到我当前的尝试,副本在https://github.com/billybillyjim/billybillyjim.github.io

我当前的流程是这样:

  1. 在Visual Studio 2019预览版(3.0.100-preview6-012264)中创建全新的客户端Blazor页面。

  2. 转到Github Pages并创建一个名为billybillyjim.github.io

  3. 的存储库。
  4. 使用Desktop Github应用将存储库克隆到本地文件夹。

  5. 使用VS2019的“生成”菜单中的“发布”选项,我选择一个文件夹配置文件。

  6. 成功构建后,我将创建的文件从发布的文件夹移到repo文件夹。

  7. 我提交并推送到github。

  8. 我添加一个.nojekyll文件,并将SPA javascript脚本添加到新的404.html和index.html中。

尝试加载页面会给我一个404。 “无法加载资源:服务器响应状态为404()” 此错误适用于每个dll文件。

我尝试过的事情:

将所有内容放入文件夹中,更改index.html中的基本href,并将SPA脚本segmentCount设置为1。

删除下划线并更新index和两个blazor.js文件中的文件引用。

按照the instructions here.末尾的说明将index.html中的href更改为回购名称。

我已将自己的设置与https://github.com/blazor-demo/blazor-demo.github.io上的示例页面进行了比较,它的设置与我的非常相似,但是它已经使用了一年,并且似乎使用了非常不同的dll集和不同的blazor.js。 / p>

我是Web开发的新手,所以我很可能完全误解了一些简单的东西。

3 个答案:

答案 0 :(得分:1)

让它为我工作的两个关键因素是:

  • 在blazor索引页面中提供基本路径
  • 从文件夹(例如_framework和_bin文件夹)中删除前导下划线。

修复基本路径

您需要执行此操作,因为Blazor应用程序中的文件被引用到站点的根目录,并且GitHub Pages站点将项目名称作为路径的第一部分。

在index.html中进行更改: <base href="/" /> 至: <base href="/YOURPROJECTNAME/" />

这使浏览器将您的项目名称添加到它获取的所有文件的路径的开头。

如果要将Blazor应用程序嵌套在另一个子目录中存储,则还需要将其包含在基本路径中。

您可以通过查看浏览器的开发工具并检查其所击中的任何404路径来判断是否有效。

修复下划线

我必须:

  • 从文件夹中删除下划线
  • index.htmlframework\blazor.webassembly.js中重命名对_framework和_bin的引用

自动化

我在应用程序的某些PowerShell后发布中结合了以下两个步骤:(请注意,您需要将<base>标签设置为项目的正确值)

(Get-Content .\public\blazor-sample\index.html) `
    -replace '<base href="/" />', '<base href="/lifti/blazor-sample/" />' `
    -replace '_framework', 'framework' |
    Out-File .\public\blazor-sample\index.html

Rename-Item .\public\blazor-sample\_framework "framework"
Rename-Item .\public\blazor-sample\framework\_bin "bin"
(Get-Content .\public\blazor-sample\framework\blazor.webassembly.js) `
    -replace '_framework', 'framework' `
    -replace '_bin', 'bin' |
    Out-File .\public\blazor-sample\framework\blazor.webassembly.js

答案 1 :(得分:0)

在Git页面上托管Blazor应用很痛苦。我尝试了多种方法,但以某种方式导致错误。但是,如果您正在寻找Blazor应用程序的免费有限部署选项,则可以尝试Firebase。 您可以参阅我的文章https://ankitsharmablogs.com/hosting-a-blazor-application-on-firebase/,以获得有关在Firebase上托管Blazor应用程序的逐步指南。

答案 2 :(得分:0)

我终于明白了!我不知道以前怎么没注意到,但是我的仓库实际上并没有接受我的bin文件夹,其中包含了所有应用程序的dll。看来(也许是默认设置?)Github页面会忽略bin文件夹。首先,我尝试编辑仓库的gitignore文件,但似乎没有更新以显示文件,因此我不得不使用git add -f framework / bin /手动添加文件,然后提交并推送。现在该网站正在运行!