【发布时间】: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.Transfer、Context.RewritePath只允许使用相同的 Web 应用程序重写路径。 -
@Alex 和 Hanno,是的,你们两个是对的,这就是我首先问这个问题的原因。有什么办法可以克服这个限制吗?
-
@Kassem:不这么认为。我知道的唯一方法是使用
Response.Redirect。但我想错了;) -
或者,如果您可以使用 IIS 重写模块,那么您可以通过在
web.config中设置规则来使其工作。这是一个选择吗?
标签: asp.net asp.net-mvc url-rewriting routing httpmodule