我们最近使用签名证书更新了我们的服务器,并将基本网址从https://servername/更改为https://servername.domain.info/。这破坏了Dojo中的模块加载,我似乎无法纠正它。当前配置如下所示:
var dojoConfig = {
async: true,
packages: [
{
name: "js",
location: location.pathname.replace(/\/[^/]+$/, "") + 'Scripts'
},
{
name: "widgets",
location: location.pathname.replace(/\/[^/]+$/, "") + 'Scripts/widgets'
},
{
name: "dgrid",
location: location.pathname.replace(/\/[^/]+$/, "") + 'Scripts/3.14/dgrid'
},
{
name: "dijit",
location: location.pathname.replace(/\/[^/]+$/, "") + 'Scripts/3.14/dijit'
}
]
};
这曾经工作过,当根URL只是本地主机'时,它仍然适用于我的开发机器。看一下控制台中的错误,它似乎试图在https://servername/而不是https://servername.domain.info/找到模块,我已经尝试了一切我能找到的指向正确方向的模块,包括设置明确地baseUrl: 'https://servername.domain.info'
。我尝试的任何内容都会产生不同的URL字符串,有时只是路径名,没有基本URL,有时路径名加协议,没有域信息等。作为参考,我还尝试将服务器URL添加到每个位置' s URL字符串,我得到相同的错误,似乎删除了除服务器域名的第一个单词以外的所有内容。
我不确定自己做错了什么,而且我对dojoLoader决定放弃的东西感到困惑。我已阅读并重新阅读文档,但据我所知,基本URL的计算方式并不多,只是关于如何将配置中的baseUrl设置为某些内容。
编辑:根据下面的评论,我意识到需要更多信息。我正在使用Visual Studio 2015并发布到运行IIS的Windows Server 2012 R2(v7 iirc)。看起来似乎Visual Studio可能会以某种方式搞乱URL,Dojo不应该受到责备。通过直接在服务器上编辑文件并为每个包(及其依赖项)设置位置URL,我能够解决这个问题。我仍然想知道它为什么会发生以及如何正确设置它。
<head>
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>@ViewBag.Title - ProjectName</title>
<link rel="stylesheet" href="~/Content/font-awesome.min.css" />
<link rel="stylesheet" href="~/Content/jquery-ui-1.10.3.custom.css" />
<link rel="stylesheet" href="~/Scripts/3.14/esri/css/esri.css" />
<link rel="stylesheet" href="~/Content/bootstrap-datetimepicker.min.css" />
@Scripts.Render("~/bundles/modernizr")
<link rel="stylesheet" href="~/Content/map.css" />
@Styles.Render("~/Content/css")
</head>