0

我有一个应用程序需要访问远程服务器上的文件的权限。

我的应用程序在服务器 A 中,我要访问的文件在服务器 B 中。这 2 台服务器在同一个域中。

我在服务器 A 中为服务器 B 中的目录创建了一个虚拟目录。虚拟目录的名称是 FolderFromServerB,其路径是 \ServerB\Folder。我使用用户进行身份验证,当我在 IIS 中测试连接时,它说一切正常。

此外,当我将锚标记放入如下所示的测试文件中时,我可以访问该文件并且内容显示在页面中:

<a href="FolderFromServerB/test.txt">Test file</a> -->  **This works**

但是我的问题是,当我使用代码来确定该文件是否存在时,它总是返回 False。我的代码如下:

FileInfo fi = new FileInfo(@"\FolderFromServerB/test.txt"); -->这不起作用

Response.Write(fi.Exists); --> 这总是'假'

我向服务器 B 中的用户和网络服务以及所有人和管理员授予了“完全控制”权限,但我都没有工作。

我怎样才能让它工作?

它上周工作。我猜服务器更新了自己并且发生了一些更新,但我找不到任何解决方法。我现在非常绝望,我必须更改所有代码并花费大量时间使其工作。

4

2 回答 2

0

您的代码不起作用,因为 ASP.Net 应用程序的当前执行文件夹不是您的应用程序的文件夹,而是c:\windows\system32.

创建FileInfo对象时,您将尝试读取c:\windows\system32\FolderFromServerB\test.txt.

之所以<a href="FolderFromServerB/test.txt">有效,是因为该链接将相对于当前页面(如果该页面位于另一个目录中,它将不起作用)。

如果您要查找的文件位于您的应用程序目录下,您可以使用以下命令将虚拟路径转换为物理路径:

string actualFilePath = HttpContext.Current.Server.MapPath("~/FolderFromServerB/test.txt");
FileInfo fi = new FileInfo(actualFilePath);
于 2014-10-13T14:16:12.133 回答
0

我找到了 web.config 中的解决方法:

<identity impersonate="true"  userName="{domain}\{username}" password="{password}"/>

我使用 File.Exist() 几个月,但突然它消失了,没有工作,我不知道为什么。但它是上面的解决方案。

于 2014-10-13T13:40:08.537 回答