我有一个应用程序需要访问远程服务器上的文件。
我的应用程序位于服务器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中的管理员,但我也没有工作。
我怎样才能让它发挥作用?
它上周正在运作。我猜服务器更新了自己并进行了一些更新,但我找不到任何解决方法。我现在非常绝望,我必须改变我的所有代码并花费大量时间使其工作。
答案 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);