我使用javascript使用此代码获取基本网址:
alert(window.location.protocol + "//" + window.location.host);
它将在开发站点中显示http://localhost:[port_number]。然后,在部署到生产站点后,它将显示http://dev01
它给了我错误的基本网址,因为主网址是http://dev01/WebApplication1。我可以在代码中添加应用程序名称,因此它将是:
alert(window.location.protocol + "//" + window.location.host + "/WebApplication1");
但是这种方法不实用,因为我必须在开发站点中删除"/WebApplication1"
。
这种情况有解决办法吗?
答案 0 :(得分:2)
你能简单地添加一些条件逻辑来附加生产中的子目录吗?
var host = window.location.host,
path = host === 'dev01' ? '/WebApplication1' : '',
fullPath = window.location.protocol + '//' + host + path;
alert(fullPath);
答案 1 :(得分:1)
您需要从服务器端执行此操作。
WebApplication1
将更改取决于您的IIS虚拟目录设置
让代码适用于开发&生产环境
请尝试以下操作。
Layout.cshtml 中的
<head>
<script>
var base_url = '@Request.Url.GetComponents(UriComponents.SchemeAndServer, UriFormat.Unescaped)@Request.ApplicationPath'
// navigate around the site, base url should be the same
alert(base_url);
</script>
</head>
答案 2 :(得分:0)
尝试以下可能有效的代码:
var patharray=window.location.pathname.split("/");
alert(window.location.origin+"/"+patharray[1]);
这里window.location.path将为您提供网站的完整路径......