我有一个现有的 .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以使用根集线器。
答案 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>