4

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

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

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

\\thisMachineName\UploadFolder\

但我总是得到一个异常,指出对该路径的访问被拒绝。

如果我将目录更改为

c:\UploadFolder\

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

有什么想法或想法吗?

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

4

3 回答 3

3

我经常看到人们做的一件事是他们未能设置共享权限。要设置共享文件夹,您必须执行以下操作:

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

在这种情况下,第 1 项通常意味着检查您的配置或简单地使用进程资源管理器来确定 ASP.NET 在哪个帐户下运行。谷歌上有很多关于如何做到这一点的信息。

2号是显而易见的。您登录物理驱动器所在的计算机,浏览到资源管理器中的文件夹,右键单击它并点击安全选项卡。我们已经这样做了无数次。

第三是人们搞砸的地方。是的,工作人员帐户现在有权访问本地文件系统,但不能通过网络连接到本地文件系统。从“安全”选项卡跳回网络共享选项卡并查找“权限”按钮。您将使用它来授予工作人员帐户连接到共享的权限。

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

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

如果你摸不着头脑,那么你有一些学习要做。这东西不容易。我强烈建议阅读以下内容:

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

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

于 2009-02-27T17:11:05.980 回答
1

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

于 2009-02-27T16:45:58.350 回答
0

除了威尔的回答。

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

在共享文件夹的安全选项卡中添加NETWORK为新用户并授予所需权限。

于 2016-11-18T15:19:28.437 回答