asp.net 核心共享远程或在应用程序之间使用公共 wwwroot 运行 在负载均衡器后面

asp.net core share remote or use common wwwroot among apps running behind the load balancer

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

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

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

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

喜欢wwwroot/my_upload_folder_share

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());
}

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