繁体   English   中英

从VS运行时获取URL时不带端口,在IIS中运行时不带应用程序名

[英]Getting URL without port when running from VS, or without application name when running in IIS

从调试器运行时,应用程序的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/

尝试

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

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

否则,在Request.Url中有3个属性可以满足您的需求,即DnssafeHost(由Nilzor指导),授权和主机,我认为最简单的方法是通过

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

您只需要做::

  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");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM