我正在尝试重定向到MVC网站中的某个页面,所以我的控制器中有以下代码:
return Redirect("/test");
我在test.local
域上通过IIS在本地运行我的网站,当我点击此控制器时,我希望转到http://test.local/test
,但出于某种原因,它会将我重定向到http://localhost/test
有没有人知道如何让它保持在同一个域名而不必将域名放入重定向或者我是否也必须包含域名?
请注意,我无法使用RedirectToRoute
或RedirectToAction
,因为网址是一个单独的应用程序(与当前网站位于同一个域中)
答案 0 :(得分:0)
我创建了一个扩展方法,可以在同一个域上重定向。也许这有帮助
public static class ControllerExtension
{
public static string FullyQualifiedApplicationPath
{
get
{
//Return variable declaration
var appPath = string.Empty;
//Getting the current context of HTTP request
var context = HttpContext.Current;
//Checking the current context content
if (context != null)
{
//Formatting the fully qualified website url/name
appPath = string.Format("{0}://{1}{2}{3}",
context.Request.Url.Scheme,
context.Request.Url.Host,
context.Request.Url.Port == 80
? string.Empty
: ":" + context.Request.Url.Port,
context.Request.ApplicationPath);
}
if (!appPath.EndsWith("/"))
appPath += "/";
return appPath;
}
}
public static RedirectResult RedirectSameDomain(this Controller controller, string url)
{
return new RedirectResult(FullyQualifiedApplicationPath + url);
}
}
您可以像这样使用
return this.RedirectSameDomain("/test");
FullyQualifiedApplicationPath
以及他对How can I get the root domain URI in ASP.NET?