2012-02-21 110 views
1

我正在尝试将文件写入网络共享。我很难得到它的工作。我已经研究了这个论坛有什么本地帐户用于访问共享和发现不同的结果:ASP.NET - 将文件写入文件共享

网络服务(本地帐户) ASPNET(本地帐户) 用户网络帐户(当inpersonation设置) 的组合这些取决于应用程序生命周期中的阶段

如果我有一个位于单独服务器上的文件共享,我该如何设置它才能像这样访问它:\ servername \ share name。我使用禁用了单选身份验证的IIS版本6。

回答

1

正确的语法是:

\\serverAddressOrName\share 

假设的权限是正确的,你应该能够使用此路径就像用System.IO命名空间可以像使用物理路径名。

1

这是一个明确定义的行为,是通过设计。基本上,您正在使用Web应用程序写入网络共享,如果您退后一步,并看到您正在向万维网打开一个大的资源空洞。如果这是必需的并且必须这样,我会在本地机器路径中创建这些文件,比如说“d:\ data \ workingfolder”。编写一个实现监视这个位置的文件系统监视器的窗口服务。并非全部,但这项服务将

  1. 在域帐户下运行能够访问网络共享中的问题 - 让说\\ securedmachine \ finallocation
  2. 执行上的文件一些验证(如果需要的内容而定)
  3. 端口从d文件:\ DATA \ workingfolder到\\ securedmachine \ finallocation

我相信这是强大的解决方案(或解决方法,如果你喜欢的说),让您的资源安全,还有一个分离在某种程度上(即商业逻辑)通过用户界面的windows服务和数据收集)

但是,如果你仍然希望asp.net直接访问网络共享,那么你仍然可以使用模拟来做到这一点。 ASP.net在iusr_user **下运行。这是本地帐户,您无法为此帐户授予网络资源访问权限。该解决方案是有据可查的http://www.west-wind.com/weblog/posts/2005/Feb/24/Using-programmatic-Impersonation-from-an-ASPNET-Page

希望这有助于和好运

克里希纳

+0

感谢。该Web应用程序被部署到三台客户端PC上。我喜欢FileSystemWatcher的想法,我可以将它部署到三台客户端PC上。该应用程序是基于Intranet的。您是否仍然认为您提到的安全循环漏洞存在风险? – w0051977 2012-02-21 21:32:35

+0

如果它是一个Intranet应用程序,那么我提出的安全问题就变成了“噪音” - 因为有人必须突破防火墙才能访问您的域名资源,如果他们这样做了,他们不需要使用您的应用程序造成危害,他们会造成比您的应用程序提供更多的损害。不过,我认为将网络访问与网络共享分开是一个很好的做法。从您的评论中,我相信我没有很好地阐述解决方案。你不需要写3个文件系统监视器。只有一个在Web服务器上就足够了,它可以推送到你提到的3个“ – Krishna 2012-02-22 09:33:33

+0

”你正在为你的资源向万维网打开一个大洞 - 只有当你允许人们上传任何旧的ASPX页面时也许你正在运营一家托管公司?)或者B)你的整个系统设计的很糟糕。这在设计良好的基础设施中确实不应该成为问题 – 2017-04-26 21:08:08