C# 在多台服务器上上载文件的方法? Web.Config //控制器 私有只读字符串_Location=ConfigurationManager.AppSettings[“Location”]; var fileName=Path.GetFileName(httpPostedFile.fileName); var path=path.Combine(_位置,文件名); httpPostedFile.SaveAs(路径);
该代码在本地运行良好。我意识到我们在生产环境上有一个负载平衡器。我在负载平衡器后面有两台服务器A、B。有没有办法在两台服务器a、B上都上传文件?我试着做了一些研究,大多数开发者建议将文件上传到一台服务器上,然后每隔30分钟或1小时克隆一次上传文件夹。。但是应该有一个标准的方法通过代码来实现这一点…(我有服务器名和IP)C# 在多台服务器上上载文件的方法? Web.Config //控制器 私有只读字符串_Location=ConfigurationManager.AppSettings[“Location”]; var fileName=Path.GetFileName(httpPostedFile.fileName); var path=path.Combine(_位置,文件名); httpPostedFile.SaveAs(路径);,c#,.net,asp.net-mvc,asp.net-mvc-4,file-upload,C#,.net,Asp.net Mvc,Asp.net Mvc 4,File Upload,该代码在本地运行良好。我意识到我们在生产环境上有一个负载平衡器。我在负载平衡器后面有两台服务器A、B。有没有办法在两台服务器a、B上都上传文件?我试着做了一些研究,大多数开发者建议将文件上传到一台服务器上,然后每隔30分钟或1小时克隆一次上传文件夹。。但是应该有一个标准的方法通过代码来实现这一点…(我有服务器名和IP) 开发者是对的。您的应用程序不应该关心它在多少服务器上运行以及在哪些服务器上运行。只需与您的系统管理员交谈,设置rsync或类似工具来同步目录,也可以提高响应能力,因为您的应用程序
开发者是对的。您的应用程序不应该关心它在多少服务器上运行以及在哪些服务器上运行。只需与您的系统管理员交谈,设置rsync或类似工具来同步目录,也可以提高响应能力,因为您的应用程序只需保存一次 但是,如果您必须这样做,它非常简单:
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);
SaveAs()
不能保证线程安全,因此无法并行化它。您可以复制流并并行编写它,但同样,您不希望您的代码对此负责。您不应该尝试通过代码来完成此操作。如果其中一台服务器停机,会发生什么情况?您需要检测到这一点,然后在文件恢复时同步该文件
有三种明智的选择:
- 复制-假设您使用的是Windows,您可以设置并使用此句柄在服务器之间获取文件
- 同步-在生产服务器之间定期同步文件。这将有一个问题,如果您在A上上载文件,它将不会立即在B上可用
- 共享存储—文件保存到两台服务器均可访问的网络共享中。在负载平衡环境中,如果提供文件的服务器不可用,这可能会导致单点故障
foreach (string path in destinationPaths)
{
httpPostedFile.SaveAs(path);
}