【问题标题】:How do I validate whether a URL location exists or not?如何验证 URL 位置是否存在?
【发布时间】:2011-09-22 14:53:34
【问题描述】:

我们在服务器上托管 SSIS 报告,并将它们的路径存储在 sql server 表中。从.Net,我希望能够确保输入的路径是正确的。

这应该返回“true”,因为那里有报告,例如:

  http://server/Reports/Pages/Viewer.aspx?%2fShopFloor%2fProduction+by+Turn&rs:Command=Render

这应该返回 false。

http://I am an invalid location/I am laughing at you/now I'm UEEing

我正在查看 WebRequests,但我不知道这是否是我应该采取的路线。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 唯一的判断方法(假设您已经验证该 URL 是一个有效的 URL)是发出 HTTP 请求并查看它是否成功。
  • 请注意,服务器可能会返回带有代码 HTTP 200 的错误页面,因此您可能需要检查响应的内容。
  • @jeffamaphone:没错,但是,你真的只需要 HEAD 请求,因为你不需要下载整个东西。
  • @Guffa:那么服务器没有正确遵循 RFC 标准。默认情况下,ASP.Net 应该遵循该标准。
  • 是的,有很多细微之处和可能的优化。

标签: c# url .net-4.0


【解决方案1】:

您可以尝试发出 HEAD 请求来验证资源是否存在。使用 HEAD 请求,您只需要 HTTP 代码(200 = 成功,404 = 未找到),而无需消耗资源或多余的内存来下载整个资源。查看HttpWebRequest 类以执行实际请求。

【讨论】:

    【解决方案2】:

    向 URL 发出 http HEAD 请求,它应该只获取标头。这样,如果存在,您就不需要下载整个页面。从返回的标头(如果有)中,您应该能够确定它是否是正确的 URL。

    【讨论】:

      【解决方案3】:

      我不确定您的网络的确切布局,但如果 .net 应用程序可以查看报告的存储位置,您可以使用 File.Exists()。否则,mellamokb 和 red-X 的想法是对的。

      【讨论】:

        猜你喜欢
        • 2022-11-10
        • 1970-01-01
        • 2012-08-14
        • 2013-04-20
        • 1970-01-01
        • 2011-03-11
        • 2017-09-05
        • 1970-01-01
        • 2020-03-25
        相关资源
        最近更新 更多