1

这是我的 Visual Basic 2005 .NET 代码:

Dim imgflnm as string = "c:\testfolder\testdoc.txt"
Dim fltotest As New System.IO.FileInfo(imgflnm)
Dim tsrslt As Boolean
tsrslt = fltotest.Exists
System.Web.HttpContext.Current.Response.Write("source file exists result=" & tsrslt & "<br/>")

上面的代码在本地驱动器(与应用程序相同的驱动器)上看到有问题的文件时,将 tsrslt 返回为真。但是在映射的驱动器号上,它看不到文件,因此 tsrslt 评估为假。

我尝试了以下方法:

DNS 路径

\\DPATSERVER\testfolder\testdoc.txt

ip路径

\\192.xxx.yyy.zz\testfolder\testdoc.txt

非标准驱动器上的 dns 路径

\\DPATSERVER\e\testfolder\testdoc.txt

非标准驱动器上的 ip 路径(如上使用 ip 而不是 dns)
非标准驱动器上的 dns 和 ip 在驱动器号后使用 $。

以上都看不到远程服务器上的文件。任何建议,将不胜感激。

4

1 回答 1

2

当您调用该网站并使用 System.IO.File.Exists 时,实际上是 IUSR 帐户在执行文件请求。

IIS 的默认设置是为 Web 服务器使用本地帐户,并且该帐户没有访问网络共享的权限,因为它是一个本地帐户,仅存在于该 1 台计算机上,而在另一台计算机上不存在。

您需要为您的网站配置 IIS 应用程序池以使用域用户帐户运行,然后为该帐户授予网络共享权限。如果您不在域中,请在两台机器上使用相同的密码创建相同的用户。然后以该用户身份运行 IIS。

不太安全的方法是允许所有人访问网络共享。

配置 IIS 应用程序池标识

例子:


域或网络帐户

  1. 相同的用户名和密码用于访问同一网络上的任何计算机。如果更改密码,所有计算机的密码都会更改。

网络服务器

1.1 更改应用程序池以使用您用于登录的用户名和密码 (1.) 或同一网络上的类似帐户。通常,您将为此专门在网络上创建一个帐户,该帐户只能访问网络上的特定资源。如果你让这个用户访问整个网络,那么这意味着你的整个网络现在都可以被 IIS 访问,存在巨大的安全风险。

文件服务器

1.2 右键单击​​您要共享的文件夹,然后转到安全选项卡。确认用户 (1.) 有权访问该文件夹。


本地账户

  1. 这仅存在于 1 台计算机上,您可以在另一台计算机上创建相同的用户。但是,如果您更改计算机 1 上的密码,它不会更改计算机 2 上的密码。

网络服务器

2.1 更改应用程序池以使用您用于登录的用户名和密码 (2.) 或专门为此用途创建的帐户。

文件服务器

2.1 在这台计算机上使用完全相同的凭据创建完全相同的用户(2.,2.1) 右键单击​​您要共享的文件夹并转到安全选项卡。确认用户 (2.,2.1,2.2) 有权访问该文件夹。


不太安全的方法

文件服务器

  1. 右键单击您要共享的文件夹,然后转到安全选项卡并授予用户对该文件夹的所有人访问权限。
于 2015-08-13T01:34:01.787 回答