检查远程服务器上的文件是否存在

时间:2014-10-13 11:59:36

标签: c# iis file-exists applicationpoolidentity

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

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

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

另外,当我在下面的测试文件中放置一个锚标签时,我可以访问该文件,内容显示在页面中:

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

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

  

FileInfo fi = new FileInfo(@&#34; \ FolderFromServerB / test.txt&#34;); - &GT; 这不起作用

     

回复于(fi.Exists); - &GT;这总是&#39; False&#39;

我批准了“完全控制”&#39;允许我的用户和网络服务&amp;每个人都和服务器B中的管理员,但我也没有工作。

我怎样才能让它发挥作用?

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分: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);