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&#39; s
Thnaks
答案 0 :(得分:4)
您不应该尝试通过代码执行此操作。如果其中一台服务器出现故障会怎样?您需要检测到这一点,然后在文件重新启动时同步该文件。
有三种明智的选择:
答案 1 :(得分:0)
开发人员是对的。您的应用程序不应该关心它运行的服务器数量和服务器数量。只需与您的系统管理员交谈并设置rsync或类似内容来同步目录,同时提高响应速度,因为您的应用程序只需保存一次。
如果您必须,那么它就像以下一样简单:
foreach (string path in destinationPaths)
{
httpPostedFile.SaveAs(path);
}
SaveAs()
并非保证是线程安全的,因此您无法对其进行并行处理。您可以复制流并将其并行写入,但同样,您也不希望代码对此负责。