【发布时间】:2021-04-07 09:51:02
【问题描述】:
有一个 Web 表单应用程序,我想通过将 Blazor 嵌入到 Web 表单页面中,逐页逐步移植到 Blazor WebAssembly,就像使用 Angular 一样。
将 Blazor 应用发布到名为“Blazor”的子目录下的 Web 窗体项目。如果我运行 Web 窗体应用程序并点击 http://localhost:1234/Blazor,则 Blazor 应用程序运行良好(在编辑 Blazor index.html => <base href="/Blazor/" /> 之后)。但是,当我尝试将 Blazor 嵌入 Web 表单页面时,它不起作用。 Web 表单页面 asp:content 包含 Blazor index.html 页面包含的内容:
<%@ Page Title="EmbedTest" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true" CodeBehind="EmbedTest.aspx.cs" Inherits="WebFormBlazor.EmbedTest" %>
<asp:Content ID="BodyContent" ContentPlaceHolderID="MainContent" runat="server">
<app>Loading...</app>
<div id="blazor-error-ui">
An unhandled error has occurred.
<a href="" class="reload">Reload</a>
<a class="dismiss">????</a>
</div>
<script src="/Blazor/wwwroot/_framework/blazor.webassembly.js"></script>
</asp:Content>
当我访问 http://localhost:1234/EmbedTest 时,页面显示: 正在加载... 发生了未处理的错误。重新加载????
并在控制台中显示以下错误消息: 未捕获的 SyntaxError:意外令牌 '
这种方法确实适用于 Angular。我在尝试使用 Blazor WebAssembly 时缺少什么?
更新: 根据 Magoo 先生的说法,它没有下载 blazor.webassembly.js,而是实际下载了解释错误消息的 index.html。
将页面中的路径从 /Blazor/wwwroot/_framework/blazor.webassembly.js 更改为 Web 窗体页面中的 /Blazor/_framework/blazor.webassembly.js,现在下载脚本但遇到新错误。为 blazor.boot.json 提供 404 Not Found。
Blazor.webassembly.js 不知道基本 href 应该是 /Blazor/ 并尝试从 localhost:1234/_framework/blazor.boot.json 而不是 localhost:1234/Blazor/_framework 获取 blazor.boot.json /blazor.boot.json。
那么下一个问题:如何告诉 blazor.webassembly.js 它的基本 href 应该不是 '/'(在我的例子中是 '/Blazor/')?
【问题讨论】:
-
加载页面时检查网络选项卡 -
blazor.webassembly.js文件是否正确提供? (我的猜测是否定的,因为路径看起来很奇怪 - 删除 wwwroot) -
是的,所有必要的文件都以 http 状态 200 提供,包括 blazor.webassembly.js
-
但它实际上是否返回了正确的文件,而不仅仅是正确的状态?可以手动下载吗?
标签: asp.net webforms blazor blazor-webassembly