簡體   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