我的 ASP.NET MVC 项目有一个奇怪的路由问题,希望你们能帮助我。
总体而言,当我在本地主机上运行项目或在服务器上运行项目时一切正常,而它直接部署在http://myServerName
. 当我将应用程序部署到位于不同虚拟目录下的服务器上的各种环境时,问题就开始了。例如:http://myServerName/QaEnviornment
或http://myServerName/TestEnviornment
问题是对应用程序 URL 的所有 Javascript 调用都会忽略我的环境虚拟目录并失败。例如,在我的 QA 服务器上,每当我必须进行 Ajax 调用时,我都会采用标准方法,例如:
var myUrl = '/ControllerName/ActionMethodName/'
$.ajax({url:myUrl,success:function(){Do stuff} })
因为我的应用程序部署在 上http://myServerName/QaEnviornment
,所以在呈现时我希望 myUrl 是http://myServerName/QaEnviornment/ControllerName/ActionMethodName
. 相反,它回来了as http://myServerName/ControllerName/ActionMethodName
,当然失败了。
为了暂时解决这个问题,我声明了一个包含环境文件夹名称的全局 Javascript 变量,当我为 javascript 调用构建 URL 时,我必须记住始终将它们构造为 varmyUrl = myGlobalFolderVar + '/ControllerName/ActionMethodName/'
使用全局 JavaScript 变量来解决这个问题对我来说似乎是一个糟糕的解决方案。我可以做些什么来使路由正常工作,以便每当进行 JavaScript 调用时,应用程序在其下运行的任何子文件夹始终包含在 URL 中?