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

本文关键字:URL 获取 运行时 IIS 应用程序 VS 或者 | 更新日期: 2023-09-27 17:49:55

当我从调试器中运行时,我的应用程序的URL是这样的

http://localhost:52230/

在IIS中:

http://localhost/MyApp

或者,当我从另一台电脑上浏览时,

http://192.168.168.11/MyApp

Where MyApp = my application name.

是否有一种方法,使用剃刀语法,只得到http://localhosthttp://192.168.168.11 ?

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

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

Try

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

你只需要做::

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

使用此函数获得独立于根的正确路由:

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

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

否则在请求中。Url是3个属性,给我你需要的,DnssafeHost (Nilzor提到的)授权和主机,我认为最简单的方法是通过

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