从VS运行时获取没有端口的URL,或者在IIS中运行时没有应用程序名称

时间:2014-03-12 07:57:35

标签: c# .net asp.net-mvc url razor

当我从调试器运行时,我的应用程序的URL看起来像

http://localhost:52230/

在IIS中:

http://localhost/MyApp

或者,当我从另一台PC浏览时,

http://192.168.168.11/MyApp

MyApp =我的应用程序名称。

是否有办法使用剃刀语法仅获取http://localhosthttp://192.168.168.11

我尝试@Url.Content("~/),但它返回http://localhost:52230/

3 个答案:

答案 0 :(得分:2)

尝试

@(Context.Request.Url.Scheme + "://" + Context.Request.Url.DnsSafeHost)

答案 1 :(得分:0)

当我查看HttpContext.Request标头时,有一个名为“Host”的标头给我Localhost(我通过iis Localhost运行)所以对你来说这应该给你Localhost / MyApp,当我从另一台计算机运行它时这台主机给了我iis正在运行的计算机的ip。

否则,在Request.Url中有3个属性可以提供我所需要的东西,DnssafeHost(由Nilzor提供)作为权威和主持人,我认为获得它的最简单方法是通过

@HttpContext.Current.Request.Url.Host.ToString()

答案 2 :(得分:0)

你只需做::

  var _rootUrl = '@Url.Content("~")';

使用此函数在root上正确连接路径:

function rootUrl(url) {                                                    
var _rootUrl = '@Url.Content("~")';
var x = url;
if (url.indexOf(_rootUrl) != 0) {
    x = _rootUrl + "/" + url;
    x = x.replace(/\/\//g, "/").replace(/\/\//g, "/");
}
return x;

};

将其用作::

rootUrl("ControllerName/ActionName");