繁体   English   中英

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

[英]Check if file from remote server exists

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

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

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

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

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

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

FileInfo fi =新的FileInfo(@“ \\ FolderFromServerB / test.txt”); -> 这不起作用

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

我向服务器B中的用户&网络服务&每个人&管理员授予了'完全控制'权限,但是我都没有工作。

我该如何运作?

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

我发现了web.config中的解决方法:

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

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

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

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

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

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

string actualFilePath = HttpContext.Current.Server.MapPath("~/FolderFromServerB/test.txt");
FileInfo fi = new FileInfo(actualFilePath);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM