【问题标题】:How to load a Blazor App as a plugin/embed in another Domain?如何将 Blazor 应用程序作为插件加载/嵌入到另一个域中?
【发布时间】:2022-01-11 07:39:51
【问题描述】:

我花了很多时间来让 Blazor 插件正常工作,我的应用程序被用作插件/嵌入到另一个域的网页中。它有效,但该方法有一些严重的缺陷,我希望有人找到更好的方法。

为了澄清我在做什么,我的网站在右边,另一个网站需要调用我的插件的代码在左边。

我目前的方法:

  1. 使用 Ahead Of Time 编译 (AOT) 编译我的应用程序,详细信息 here。如果没有这个,Blazor 会尝试加载所有 dll 来自客户端域,而不是来自我的服务器。
  2. 将“autostart=false”和“Blazor.start({...”代码添加到客户端域需要编写的代码中。这甚至是 b/c 所需要的 使用 AOT,Blazor 仍然尝试从 客户的域。它是硬连线的,请参阅issue。问题是 关闭 b/c 他们说它已通过 JS 初始化程序修复,但即使使用 AOT,JS 初始化程序仍默认为托管客户端的域。所以它并没有真正修复。

问题是:

  1. AOT 仅适用于发布版本。我需要进行开发构建以进行调试。 MS 说他们正在处理这个问题,所以可能不是阻止程序。
  2. 客户端的 Blazor.start 代码看起来很糟糕。
  3. 大多数 Blazor 调用仍默认使用托管客户端的域,例如上面 #2 中的 JS 初始化程序。即使一个空插件正在工作,我怀疑这个问题会阻止创建更复杂的应用程序。这是一个大问题,我希望有人能提供帮助。可以在另一个域中嵌入 Blazor 应用,但可能仅适用于非常基本的 Blazor 页面,并不复杂。

一个可能的解决方案是 MS 计划绕过防火墙阻止 Blazor 对其 DLL 的调用,详细信息 here。这是一个如此复杂和高维护的问题,我担心它会产生更多问题,尽管我还是打算试一试。

任何改进/替代方案将不胜感激!谢谢!

edit:对上述大多数问题的潜在解决方案是更改 blazor 的 fetch 函数使用的默认来源。这并不能真正回答这个问题,所以我创建了第二个问题来涵盖它here

【问题讨论】:

  • 这是我需要尽快解决的问题,所以我会密切关注这个线程。在 DotnetConf 中,我记得他们展示了在另一个站点中使用它是多么容易(认为它是 React),而不使用 IFrame。在这里我找到了视频(dotnetConf 2021)youtu.be/oPyTZ-HGdn4?t=9228

标签: blazor blazor-webassembly


【解决方案1】:

此人的博客中可能有些内容可用于您的情况。我自己正在着手这项任务。

【讨论】:

  • 什么人的博客?
猜你喜欢
  • 2019-03-07
  • 2010-09-23
  • 2018-05-03
  • 2015-04-05
  • 1970-01-01
  • 2019-10-07
  • 1970-01-01
  • 1970-01-01
  • 2010-11-18
相关资源
最近更新 更多