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

C# 从VS运行时获取不带端口的URL,或在IIS中运行时获取不带应用程序名称的URL,c#,.net,asp.net-mvc,url,razor,C#,.net,Asp.net Mvc,Url,Razor,当我从调试器运行时,我的应用程序的URL看起来就是这样 http://localhost:52230/ 在IIS中: http://localhost/MyApp 或者,当我从另一台电脑浏览时 http://192.168.168.11/MyApp 其中MyApp=我的应用程序的名称 有没有办法使用razor语法来获取http://localhost或http://192.168.168.11仅限 我尝试了@Url.Content(“~/),但它返回了我http://localhost:5

当我从调试器运行时,我的应用程序的URL看起来就是这样

http://localhost:52230/
在IIS中:

http://localhost/MyApp
或者,当我从另一台电脑浏览时

http://192.168.168.11/MyApp
其中MyApp=我的应用程序的名称

有没有办法使用razor语法来获取
http://localhost
http://192.168.168.11
仅限

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

试试看

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

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

另外,在Request.Url中有3个属性,它们为我提供了你所需要的,DnssafeHost(由Nilzor指定)Authority和Host,我认为最简单的方法是通过

@HttpContext.Current.Request.Url.Host.ToString()
你只需要做::

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

您应该能够获得
http://localhost
在发布项目之前,如果将其设置为IIS中的默认网站,则需要一些在这两种情况下都可以使用的通用工具。您想在代码中使用它还是在浏览器中查看它?我需要一个解决方案,使我
http://localhost
我是在IIS中运行,还是在fr中运行这就是你要找的吗?