【问题标题】:asp.net core share remote or use common wwwroot among apps running behind the load balancerasp.net 核心在负载均衡器后面运行的应用程序之间共享远程或使用公共 wwwroot
【发布时间】:2020-03-26 03:18:38
【问题描述】:

我有一个场景,我在负载均衡器 F5 后面使用 2 个 IIS 服务器在 asp.net 核心 (nopcommerce 4.10) 上运行,并带有粘性会话。

由于 nopcommerce 目前不支持网络农场,我正在寻找一种解决方法,以便在这两个服务器之间共享 wwwroot 文件夹以获取图像/文件,并考虑是否可以在其他地方创建 wwwroot 文件夹而不是应用程序根路径,以便这两个应用程序可以使用它(如果我以某种方式在 startup.cs 中配置 dotnet 核心应用程序以使用来自不同路径的 wwwroot 文件夹,这是可能的)。 或者,也可以从其中一个共享 wwwroot 文件夹。

我当前的解决方案是在从管理员端上传任何内容时将文件复制到另一台服务器上,但这不适用于捆绑。

【问题讨论】:

  • 你可以尝试使用网络共享文件夹,然后通过虚拟路径将共享文件夹挂载到IIS服务器上来达到这个要求。
  • @jalpa 尝试,如果它有效,会告诉你
  • 您的问题解决了吗?

标签: asp.net-core iis load-balancing f5 wwwroot


【解决方案1】:

我不知道 nopcommerce,但一种方法是设置网络共享并将其映射到 wwwroot 文件夹,并将其写入权限授予应用程序池。写权限只是因为您写道您正在从管理员上传文件。我猜你也有你想要包含在 wwwroot 文件夹中的捆绑的一部分?

喜欢 wwwroot/my_upload_folder_share

【讨论】:

  • 我认为你没有得到问题,我已经在 www 根目录中上传和捆绑了图片。应用程序池也有完全权限,问题是我如何在两台服务器之间共享它
  • 这就是网络共享映射为服务器上 wwwroot 中的文件夹的潜在问题。只需将其设置为部署的一部分。
【解决方案2】:

来自 Robban1980 的评论和回答很有帮助,我非常感谢。虽然我希望发布我的最终解决方案,但它会帮助某人,特别是对于 nopcommerce 开发人员。

我已经覆盖了 FileProvider 中的方法(nopcommerce 使用它来访问文件资源)从我的文件夹中获取文件,而不是从 wwwroot 中获取文件。

public override string GetAbsolutePath(params string[] paths)  
{
      var allPaths = paths.ToList();
      allPaths.Insert(0, "my-folder");
      return Path.Combine(allPaths.ToArray());
}

另外,我必须为该文件夹设置读/写文件权限,以使其可以通过网络访问

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多