【问题标题】:ASP.Net MVC3 - Is there a way to ignore a request?ASP.Net MVC3 - 有没有办法忽略请求?
【发布时间】:2012-01-17 08:19:04
【问题描述】:

我有一个带有 REST API 服务的 ASP MVC3 网站。 当用户传入无效的 API 或他们已被列入黑名单时,我希望忽略响应。 我知道我可以发回 404 或传回 503,但如果有人不断轮询我,那么我最好忽略导致超时的响应。从而延迟了我的服务器得到的锤击。

这在 ASP.net MVC3 中可行吗?如果是这样,任何帮助将不胜感激。 谢谢

【问题讨论】:

  • 您的意思是忽略请求还是不返回响应
  • 我的意思是后者。不发回响应。理想情况下,服务器端的处理时间/负担最少。

标签: asp.net asp.net-mvc tcp


【解决方案1】:

对于你想要的,你仍然需要解析请求,所以它总是会消耗服务器资源,特别是如果你有一个烦人的用户每 500 毫秒发送一次查询......

在这种情况下,您会阻止请求的 IP / Header 一段时间,例如 10 分钟,但最好在负载均衡器上阻止它并阻止该请求甚至到达您的应用程序,如果您使用亚马逊服务来运行您的服务,这很容易实现,但所有其他云提供商也支持这一点,如果您使用云托管的话。

如果您只能使用您的 Web 应用程序,并且这是一个未经测试的解决方案,您可以将忽略的路由添加到您的路由机制中,例如:

routes.IgnoreRoute("{*allignore}", new {allignore=@".*\.ignore(/.*)?"});

在检查 IP 被禁止后,使用例如 Response.Redirect() 简单重定向到您的站点,到 .ignore 路径...或者,为什么不将该请求重定向到 google.com 只是为了好玩?

【讨论】:

  • 我正在使用 Azure 来托管它。不确定我当前是否可以访问负载均衡器。这不类似于重定向到 404 吗?除了对客户来说会更快吗?
  • 在 Azure 中,您可以通过 REST 调用访问整个 API,在 Windows Azure 流量管理器上读取它,因为这是他们处理请求的层...您可以轻松地将被阻止的 IP 添加到它并停止让他们查询您的应用程序。
  • 谢谢。我会看看这个。
猜你喜欢
  • 2012-01-16
  • 2020-07-02
  • 1970-01-01
  • 2015-04-17
  • 2016-12-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-10
相关资源
最近更新 更多