【发布时间】:2014-12-07 23:43:17
【问题描述】:
我有一个应用程序需要访问远程服务器上的文件的权限。
我的应用在服务器 A,我要访问的文件在服务器 B。这两台服务器在同一个域中。
我在服务器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 中的用户和网络服务以及所有人和管理员授予“完全控制”权限,但我都没有工作。
我怎样才能让它工作?
上周还在工作。我猜服务器更新了自己并且发生了一些更新,但我找不到任何解决方法。我现在非常绝望,我必须更改所有代码并花费大量时间才能使其正常工作。
【问题讨论】:
-
虚拟目录仅存在于网络服务器级别。我怀疑您的 c# 代码会意识到它的存在,因为 c# 直接与文件系统打交道。它相当于一个 Apache
Alias,它也存在于 webserve 级别。 -
你想达到什么目的?我认为您正面临XY Problem。如果您描述自己的目标,而不是您想要达到的方式,我们可能会更好地帮助您。这个文件里有什么样的数据?实际上,我认为访问文件系统数据是一种不好的做法。或者更准确地说,如果应用程序需要处理数据,我倾向于在应用程序外部创建一个临时目录,在其中为自定义应用程序池设置正确的权限。
标签: c# iis file-exists applicationpoolidentity