【问题标题】:How do I use blazor server-side inside a razor component library using areas?如何在使用区域的 razor 组件库中使用 blazor 服务器端?
【发布时间】:2019-12-13 10:26:58
【问题描述】:

我有一个现有的 .net core 3.0 preview 7 web 应用程序。我的应用程序主要是 razor-pages 组织成 areas 例如。管理员、销售等。如果我将 blazor 组件放在应用程序的根目录下,我能够成功使用它,但是,如果我将组件移动到 RCL,我可以访问该组件,但它没有响应(单击计数器示例的按钮不会增加计数)。

我希望能够访问 localhost/Admin/RazorPageContainingBlazorComponentlocalhost/Sales/AnotherRazorPageContainingBlazorComponent

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

https://localhost:5000/myfeature/_blazor/negotiate404 '''

我认为这是由于 signalR 集线器被映射到 https://localhost:5000/ 造成的,但我不确定如何添加额外的 blazor 集线器映射或如何更改 blazor.server.js 以使用根集线器。

【问题讨论】:

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


【解决方案1】:

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

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

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

【讨论】:

  • 谢谢。请注意,它会破坏模板 App.razor 附带的路由。如果您对从 blazor 应用程序路由不感兴趣,您可以简单地将视图和模板代码直接扔到 App.razor
  • 感谢支持...但是我仍在寻找非黑客解决方案...
  • 我不认为这是一个黑客行为。它只是一个记录的配置。
  • 感谢您回来。好的,但我使用普通的 asp.net core 3.1 MVC 设置。我不明白为什么在我的情况下需要这个额外的配置......
【解决方案2】:

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

所以

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

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

【讨论】:

    猜你喜欢
    • 2021-05-10
    • 2020-02-06
    • 2020-09-19
    • 2020-03-15
    • 2020-06-01
    • 2021-11-10
    • 2020-04-03
    • 2019-07-04
    相关资源
    最近更新 更多