当前位置:  开发笔记 > 数据库 > 正文

在负载平衡服务器上上载文件

如何解决《在负载平衡服务器上上载文件》经验,为你挑选了1个好方法。

我开发了一个Web项目,其中一个主要功能是上传文件.

所有权限均基于Windows身份验证.当我第一次创建项目时,我没有意识到它将在负载平衡的服务器上.现在它处于负载平衡服务器的环境中,文件上传已成为一个主要问题.

我原本以为我可以创建一个虚拟目录到网络共享,这将是上传文件夹,但是该解决方案已经变成了权限噩梦.我无法在生产环境中进行任何成功的测试运行.

所以我现在想,我的解决方案是在服务器上创建服务,检查上传目录并同步它们.我看到的另一个可能的解决方案是将文件存储在我过去遇到过一些问题的数据库中.

有没有人知道将文件上传到使用Windows权限进行身份验证的负载平衡服务器的直接解决方案?

谢谢.

更新 - 所以我已经更改了应用程序池以通过域帐户运行,该帐户对共享具有完全权限,并且在Windows权限中具有文件夹本身.虚拟目录在IIS中具有完全权限,但我仍然遇到同样的问题.

其中一件事需要做的就是创建目录的能力,我认为现在可能会让我感到沮丧.我只是使用System.IO.Directory.CreateDirectory

关于我可能缺少权限的任何其他想法?



1> Daniel Schaf..:

如果你真的想避免存储在数据库中,我认为你的下一个最好的选择是你已经谈过的虚拟目录解决方案,尽管我可以看到权限问题如何根据你的设置很容易失控.

在我们的生产环境中,我们所有不同的站点都有自己的应用程序池.应用程序池本身每个都有自己的域帐户,这使得在文件系统和SQL服务器中管理权限变得更加容易.这些帐户中的每一个都是IIS WP域组的成员.在群集中的每个服务器上,域IIS WP是本地内置IIS_WPG组的成员.IIS配置在群集中的每个服务器上都相同.这样做的重要作用是确保给定的Web应用程序始终以相同的标识运行,而不管集群中的哪个服务器被命中.

通过我所描述的设置,实现虚拟目录解决方案将非常简单,尽管您仍然需要担心其他明显的问题,例如命名冲突等.如果您仍在使用默认的应用程序池标识设置,我认为实施我所描述的内容将有助于在处理群集配置时使您的生活更加轻松.

本文列出了存储在文件系统中的一些优点和缺点:

好处

将文件存储在磁盘上的主要好处之一是它很容易实现.只需在FileUpload控件上调用SaveAs就可以了.

另一个优点是磁盘上的文件易于备份; 你只需将文件复制到另一个位置.这也使得增量备份更容易; 已备份的文件不需要再次复制.

缺点

将文件存储在文件系统中也有一些缺点.可能最棘手的问题是磁盘上文件的松耦合特性.它们与数据库中的记录没有密切关系.因此,当您从数据库中删除某个产品时,最终可能会出现孤立的产品图像.没有直接的方法在product表和images文件夹之间进行INNER JOIN,以确定你剩下的孤立文件.这意味着页面开发人员负责编写代码,以便在删除关联的数据库记录时从磁盘中删除该文件.

此外,要将上载的文件存储在磁盘上,您的Web服务器需要具有写入文件系统的权限.当您运行自己的服务器时,这很容易实现,但在ISP方案中可能会出现问题.

推荐阅读
手机用户2402852387
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有