使用UNC文件路径时,Asp.net FileUploader不起作用

时间:2009-02-27 16:42:51

标签: asp.net permissions file-upload path

首先让我说,我不是Windows文件权限的专家,所以也许这里有一些非常基本的东西。

我有一个Asp.net FileUploader控件。我在Asp.net应用程序的同一台机器上有一个文件夹,我想将文件上传到。

我希望能够告诉FileUploader将文件放在

\\thisMachineName\UploadFolder\

但我总是得到一个例外,说明拒绝访问该路径。

如果我将目录更改为

c:\UploadFolder\

它工作正常。另外,我可以将上面的UNC放到Windows资源管理器中,它实际上映射到目录。

任何想法或想法?

- 更新注意:这是一个Windows 2000服务器框,该文件夹的“Everyone”被授予了所有可能的允许权限。

3 个答案:

答案 0 :(得分:3)

我总是看到人们做的一件事是他们无法在共享上设置权限。要设置共享文件夹,您必须执行以下操作:

1)确定您将连接到共享的帐户
2)在文件系统上授予此帐户访问权限
3)授予此帐户对网络文件共享的访问权限

没有。 1,在这种情况下,通常意味着检查您的配置或仅使用进程资源管理器来确定ASP.NET正在运行的帐户。谷歌关于如何做到这一点的大量信息。

没有。 2是显而易见的。您登录到存在物理驱动器的计算机,浏览到资源管理器中的文件夹,右键单击它并点击安全选项卡。我们已经完成了这么多次。

没有。 3是人们陷入困境的地方。是的,工作者帐户现在拥有本地文件系统的权限,但不能通过网络连接到本地文件系统。从“安全”选项卡中跳回到网络共享选项卡,然后查找“权限”按钮。您将使用此权限授予工作者帐户权限以连接到共享。

我见过的第二个问题是人们试图将机器A的访问权限授予仅存在于机器B上的帐户。这通常不起作用。机器A和机器B都必须属于A和B都信任对用户进行身份验证的公共域。大多数情况下,运行Windows的企业使用ActiveDomain来控制网络上的访问权限。

为了让计算机B上的ASP.NET辅助进程访问计算机A上的共享,工作进程必须在网络上经过身份验证的帐户下运行,而不仅仅是本地计算机。大多数情况下,您必须在网络上创建特定帐户并将该帐户权限授予两台计算机,然后使用该帐户为您的网站运行ASP.NET工作进程。

如果你正在挠头,你有一些学习要做的事情。这个东西并不容易。我强烈建议阅读以下内容:

http://msdn.microsoft.com/en-us/library/ms978378.aspx

它相对清晰,包含您需要知道的所有内容。

答案 1 :(得分:1)

您可以将文件放在该目录中,但是ASP.NET进程正在运行的用户呢?在Windows Server 2003上(可能是2008年,但我不确定),ASP.NET在NETWORK SERVICE帐户下运行,该帐户几乎没有任何权限,特别是在整个网络中。您必须在ASP.NET应用程序上使用模拟或使用Everyone访问权限设置共享。对于这种类型的场景,我通常只是设置Everyone访问权限,防火墙保护它,只有Web服务器才能访问。

答案 2 :(得分:0)

除了Will的回答。

我必须授予NETWORK帐户的权限,而不是NETWORK SERVICE帐户。

在共享文件夹的安全性标签中,将NETWORK添加为新用户并授予所需权限。