在mvc网站中设置基本标记中的URL路径的不同方法

Roh*_*rma 3 asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4

嗨,我只是在我的MVC网站上传递这样的网址:

<base href="http:4546//localhost/" />
Run Code Online (Sandbox Code Playgroud)

它在本地工作,但如果我在ISS上托管它.这个网址会产生问题.

如果我在这个网址中删除4546:

HTTP://本地主机/首页/联系

然后它的工作.

我通过删除代码中的端口号尝试了它,但仍然在url端口号显示自己.

我如何删除端口号或将是什么方式,以便我可以在公共端口号80上托管它?

请让我知道我缺少的地方.

谢谢

小智 6

您可以创建一个基本控制器并添加此方法

 protected override void OnActionExecuting(ActionExecutingContext filterContext)
  {
            base.OnActionExecuting(filterContext);
            var request = HttpContext.Request;
            var baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, HttpRuntime.AppDomainAppVirtualPath == "/" ? "" : HttpRuntime.AppDomainAppVirtualPath);
            ViewBag.BasePath = baseUrl;
  }
Run Code Online (Sandbox Code Playgroud)

将始终在每个请求上调用此方法OnActionExecuting,并在您的代码中使用此viewbag.

这将解决您在代码中的每个位置写入的问题.