【问题标题】:Determine validity of URL without firing page if valid?如果有效,则确定 URL 的有效性而不触发页面?
【发布时间】:2017-12-22 11:03:38
【问题描述】:

我想确定一个 URL 是否有效如果有效,则不触发返回页面的服务器响应。 (即:不消耗网页)。

I've found this very clever attempt but it doesn't seem to work at least on an MVC action 不触发操作本身(顺便说一下,它使用 Selenium WebDriver 并启动 FirefoxDriver 实例,这就是我知道页面正在被使用的方式。)

有没有办法说“嘿,服务器,我不想要该页面,但它存在吗?”没有服务器实际上试图交回页面?

【问题讨论】:

  • 我确实说过要测试的页面位于 MVC 站点内。调用代码技术 100% 无关紧要,因为我可以以任何必要的方式实现它。
  • 很抱歉直到现在才收到您的问题,您是否尝试过使用UrlExists()?签出this
  • 你不能只返回一个空响应吗?我不认为我完全理解这一点。服务器将不得不返回一些内容让您知道该 url 是否有效。
  • 不,您无法从外部控制服务器将如何处理您的请求(是否使用 HEAD),并且知道 URL 是否有效的唯一方法是向该 URL 发出请求

标签: c# http url


【解决方案1】:

您可以发送 http“HEAD”命令(而不是“GET”、“POST”等)来仅返回页面标题。如果页面存在,服务器应该返回 200,如果不存在,则返回 404。

类似这样的:

HttpClient httpClient = new HttpClient();

HttpRequestMessage request = 
             new HttpRequestMessage(HttpMethod.Head, 
                                    new Uri("http://www.google.com"));

HttpResponseMessage response = await httpClient.SendAsync(request);

祝你好运!

【讨论】:

  • 谢谢。它仍然导致控制器触发动作。然而,有趣的方法。
  • 你可以试试 OPTIONS 或 TRACE 动词。
猜你喜欢
  • 1970-01-01
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-24
  • 2010-11-07
  • 2020-08-11
相关资源
最近更新 更多