【问题标题】:How to verify network files and folders from IIS applications如何从 IIS 应用程序验证网络文件和文件夹
【发布时间】:2017-01-06 19:43:05
【问题描述】:

我们在 SERVER-B 上有一个 Intranet Web 应用程序 (ASP.NET 4.5)。它与 SERVER-A 在同一个域中。如何从 Intranet 应用程序检查 SERVER-A 上是否存在文件?我尝试使用 File.Exits/Directory.Exis、FileWebRequest,但无法使其正常工作。是否有允许的 IIS 设置?

注意:我可以使用文件资源管理器从服务器 B 浏览服务器 A 上的文件。 注意:HttpWebRequest“确实”用于在我们的外部网站上查找文件,但该方法不适用于我们的 Intranet 到网络。

方法A(结果总是假的)

File.Exists("\\xyz-123\Shipping\State\ca.doc")
Directory.Exists("\\xyz-123\Shipping\State")

方法B(结果始终为假,不返回错误)

 '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

【问题讨论】:

    标签: c# asp.net visual-studio iis


    【解决方案1】:

    如果您与运行代码的用户共享\\xyz-123\Shipping\State 文件夹,则方法A 将起作用。

    【讨论】:

      【解决方案2】:

      几乎可以肯定,您的问题与权限有关。您的 IIS 网站作为属于 IIS 中的应用程序池的“IIS 应用程序”运行。该应用程序池有一个与之关联的 Windows 登录。该登录名需要具有访问第二台计算机上文件的权限。

      要解决此问题,请查看 IIS 中的应用程序池设置,找出运行应用程序池的用户,然后更改文件共享的权限以允许他们访问。要对此进行调试,您可以尝试将您自己的凭据分配给您的网站正在运行的 IIS 应用程序池,您可能会发现它可以正常工作,因为您个人确实有权访问这些文件。

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多