如何使用区域在剃刀组件库中使用 blazor 服务器端?

ACe*_*per 9 .net asp.net-core blazor blazor-server-side

我有一个现有的.net core 3.0 preview 7 web 应用程序。我的应用程序主要是组织成区域的剃刀页面,例如。Admin、Sales 等。如果我将blazor组件放在应用程序的根目录下,我可以成功使用它,但是,如果我将组件移动到 RCL,我可以访问该组件但它没有响应(单击按钮对于计数器示例不增加计数)。

我希望能够去localhost/Admin/RazorPageContainingBlazorComponentlocalhost/Sales/AnotherRazorPageContainingBlazorComponent

我在 Chrome 开发工具中收到此错误:''' 错误:无法完成与服务器的协商:错误

https://localhost:5000/myfeature/_blazor/negotiate 404 '''

我相信这是由将 signalR 集线器映射到https://localhost:5000/ 引起的,但我不确定如何添加额外的 blazor 集线器映射或如何更改 blazor.server.js 以使用根集线器。

ACe*_*per 7

在挖掘了 signalR 文档和 blazor.server.js 文件之后,我想出了一个解决方案。将下面的代码添加到您的布局文件中,可以将 signalR 集线器配置为使用绝对路径而不是相对路径。

<script src="~/_framework/blazor.server.js" autostart="false"></script>
<script>
    Blazor.start({
        configureSignalR: function (builder) {
            builder.withUrl("/_blazor");
        }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

这允许使用区域路由直接在 razor 类库中使用 razor 组件。


Iva*_*ong 5

嘿,我们也发现自己遇到了同样的问题。更好的解决方案是<base href="~/"/> 在 html 的头部指定 并只引用<script src="_framework/blazor.server.js"/>

所以

<html>
<head>
<base href="~/"/>
</head>
<body>

<script src="_framework/blazor.server.js"/>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)