我有一个 APIController 需要重定向到另一个可能具有不同子域的服务。简化代码:
[HttpGet]
public HttpResponseMessage DoSomething() {
HttpResponseMessage response = Request.CreateResponse(HttpStatusCode.Moved);
string hostname = GetHostname();
response.Headers.Location = new Uri("https://" + hostname + "/new_path" + Request.RequestUri.Query);
return response;
}
重定向应该转到不同的子域或相同的子域但不同的端口,具体取决于它运行的登台环境。如果我在本地运行它,它也可能会转到一个 IP。GetHostname 将始终返回正确的主机名,如果我在本地运行它,一切都会按预期工作。但是,一旦我在 Azure 上运行它,我就会重定向到一个无法访问的 IP 地址(例如http://100.1.2.3/new_path
)。有什么方法可以防止这种情况并获得原始未更改的 URL?