ASP.NET MVC动态地从URL添加/删除IIS应用程序名称/别名

时间:2018-01-17 23:35:48

标签: ajax asp.net-mvc iis visual-studio-2012

由于IIS 6.1设置,正在部署的每个应用都有一个别名,并且会对URL产生影响。在Visual Studio的开发服务器中,URL如下所示:

  

http://localhost:27019/controller/action

但是在部署到IIS之后:

  

http://servername/appname/controller/action

正如您所看到的,网址中添加了appname。部署后,所有Ajax调用都会变得不正确。我必须创建一个isIIS变量并手动为其赋值,以使其起作用:

var isIIS = true; // set to false if runs locally;    
window.appAlias = (isIIS) ? '/'+window.location.href.split('/')[3] : ''; 

在我的Ajax电话中:

$.post( window.appAlias  + webUrl, {} , callback );
与GET调用相同,我必须在window.appAlias前加上。有没有办法动态检测服务器是IIS还是Visual Studio开发服务器?我理解@Uri.Content("~/controller/action")但我没有在Razor视图上编写JavaScript。

我正在使用Visual Studio 2012,目标框架.NET 4.5,MVC 4和jQuery 1.9.2进行开发。 IIS应用程序池具有.NET 4.0。

修改 这是我的临时解决方案:在_Layout.cshtml中添加全局值:

Object.assign({
  action1: '@Url.Content("~/controller/action1")',
  action2: '@Url.Content("~/controller/action2")'
}, window);

0 个答案:

没有答案