我们在服务器B上有一个内部网web应用程序(ASP.NET 4.5)。它与SERVER-A在同一个域中。如何从Intranet应用程序检查服务器A上是否存在文件?我尝试使用File.Exits/Directory.Exis、FileWebRequest,但无法使其正常工作。是否有允许的IIS设置?
注意:我可以使用文件资源管理器从Server-B浏览Server-A上的文件。注意: HttpWebRequest“确实”可以在我们的外部网站上查找文件,但这种方法不适用于我们的内部网络。
方法A(结果始终为false)
File.Exists("\\xyz-123\Shipping\State\ca.doc")
Directory.Exists("\\xyz-123\Shipping\State")方法B (result始终为false,并且不返回错误)
'url = "file://xyz-123/Shipping/State/ca.doc"
Private Function FileExist(url As String) As Boolean
Dim response As WebResponse = Nothing
Try
Dim request = DirectCast(WebRequest.Create(url), FileWebRequest)
request.Method = "HEAD"
response = DirectCast(request.GetResponse(), WebResponse)
FileExist = True
Catch ex As Exception
Finally
If response IsNot Nothing Then response.Close()
End Try
End Function发布于 2017-01-07 03:49:34
如果您与运行代码的用户共享\\xyz-123\Shipping\State文件夹,则方法A将起作用。
发布于 2017-01-07 03:51:07
几乎可以肯定的是,您的问题与权限相关。您的IIS网站作为属于IIS中应用程序池的"IIS应用程序“运行。该应用程序池有一个与之关联的windows登录名。该登录名需要具有访问第二台计算机上的文件的权限。
要解决此问题,请查看IIS中的应用程序池设置,找出应用程序池在哪个用户下运行,然后更改文件共享上的权限以允许他们访问。要对此进行调试,您可以尝试将您自己的凭据分配给您的网站在其下运行的IIS应用程序池,您可能会发现它是有效的,因为您个人确实拥有访问文件的权限。
https://stackoverflow.com/questions/41513149
复制相似问题