c# - 在多个服务器上上传文件的方法?

标签 c# .net asp.net-mvc asp.net-mvc-4 file-upload

  Web.Config
  <add key="Location" value="C:/Upload" />

   //controller
   private readonly string _Location = ConfigurationManager.AppSettings["Location"];

   var fileName = Path.GetFileName(httpPostedFile.FileName);
   var path = Path.Combine(_Location, fileName);
   httpPostedFile.SaveAs(path);

此代码在本地运行良好。我意识到我们在生产环境中有一个负载均衡器。我在负载均衡器后面有 2 台服务器 A、B。有没有办法在服务器 A、B 上上传文件?我尝试做一些研究,大多数开发人员建议将文件上传到其中一个服务器上,然后每 30 分钟或 1 小时克隆一次上传文件夹。但是应该有一种通过代码执行此操作的标准方法......(我有服务器名称和 IP)

谢谢

最佳答案

您不应尝试通过您的代码执行此操作。如果其中一台服务器宕机了怎么办?您需要检测到这一点,然后在文件恢复后同步该文件。

对此有三种明智的选择:

  • 复制 - 假设您使用的是 Windows,您可以设置 Distributed File System并让这个句柄在您的服务器之间获取文件。
  • 同步 - 定期在您的生产服务器之间同步文件。这会产生一个问题,如果您将文件上传到 A,它不会立即在 B 上可用。
  • 共享存储 - 文件保存到两个服务器都可以访问的网络共享中。在负载平衡环境中,如果提供文件的服务器不可用,这可能会导致单点故障。

关于c# - 在多个服务器上上传文件的方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28985337/

相关文章:

asp.net-mvc - 在 MVC 中读取和显示上传的文本文件

c# - WPF DragMove() 导致问题

c# - 单元测试帮助。如何测试消息输出到控制台?

c# - 将 IEnumerable.Aggregate 与异步调用结合使用

c# - .NET app.config 文件——这是否需要与我的应用程序一起分发?

asp.net-mvc - HttpHandler 永远不会被调用

javascript - 将 List<int> 从 Javascript 传递到 ASP.Net 页面中启用 AJAX 的 WCF

c# - 自 SQL 2008 升级以来,SqlDataReader.HasRows 返回 false

c# - 读取进程内存事件

.net - 我应该为 KR403 Zebra 打印机使用哪个 SDK