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

时间:2019-08-05 21:35:15

标签: .net asp.net-core blazor blazor-server-side

我有一个现有的 .net core 3.0预览7 Web应用程序。我的应用程序主要是剃刀页,它们被组织成区域,例如。管理员,销售人员等。如果将 blazor 组件放置在应用程序的根目录中,则可以成功使用它,但是,如果将组件移至RCL,则可以访问该组件,但可以没有响应(单击计数器示例的按钮不会增加计数)。

我希望能够进入 localhost / Admin / RazorPageContainingBlazorComponent localhost / Sales / AnotherRazorPageContainingBlazorComponent

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

如此

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

<script src="_framework/blazor.server.js"/>
</body>
</html>