【问题标题】:Redirecting calls to different web applications将调用重定向到不同的 Web 应用程序
【发布时间】:2013-02-10 15:35:24
【问题描述】:

我有以下场景要实现:

  • 用户在主网站上请求/HR/Employee/Get (localhost:80)
  • HR 是托管在 IIS 中不同端口上的应用程序的名称(例如 localhost:8081),或者它可以部署在网络上的另一台服务器上。
  • URL 被截获并映射到https://localhost:8081/HR/Employee/Get(我设法让它工作)
  • 现在我需要将调用转移/重定向到目标 URL,然后将结果返回给客户端(本例中为浏览器)。

我尝试使用Server.TransferRequest,但它仅在我转移到同一域内的路线时才有效。有什么方法可以让我在不必向目标 URL 发出另一个 HTTP 请求的情况下完成这项工作?我只是希望端口 80 上的站点充当反向代理或类似的东西。

有什么想法吗?

【问题讨论】:

  • 我认为 Server.Transfer(Request) 仅用于在您的 Web 应用程序中进行重定向,所以我想您必须使用 Response.Redirect 来重定向到外部页面。
  • @Hanno:完全正确。 Server.TransferContext.RewritePath 只允许使用相同的 Web 应用程序重写路径。
  • @Alex 和 Hanno,是的,你们两个是对的,这就是我首先问这个问题的原因。有什么办法可以克服这个限制吗?
  • @Kassem:不这么认为。我知道的唯一方法是使用Response.Redirect。但我想错了;)
  • 或者,如果您可以使用 IIS 重写模块,那么您可以通过在 web.config 中设置规则来使其工作。这是一个选择吗?

标签: asp.net asp.net-mvc url-rewriting routing httpmodule


【解决方案1】:

尝试 RedirectPermanent,这将执行 301 redirect

public ActionResult Get()
{
  return RedirectPermanent("https://localhost:8081/HR/Employee/Get");
}

你也可以使用 RedirectToActionPermanent 和 RedirectToRoutePermanent

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 2011-04-25
    • 2016-04-28
    • 1970-01-01
    相关资源
    最近更新 更多