我在IIS中的子应用程序中运行了一个MVC站点,它在初始加载后执行其他内容的Ajax请求。
问题在于,如果用户未能在URL的末尾输入尾随的“/”,则AJAX请求将失败,因为XHR对象将“/”添加到请求的URL的前面。这导致它进入根域并离开应用程序区域。
下面是一个显示我的意思的Fiddler描述。
前3个条目显示了一个基本的HTML网站,我设置该网站以查看MVC环境之外会发生什么。在这种情况下,当未提供尾部“/”时,IIS会使用尾部斜杠向URL发送重定向。随后的AJAX请求会成功。
在接下来的两个条目中的MVC中,不会发出重定向,然后AJAX请求失败。如果缺少尾部的“/”,有没有办法在MVC场景中获得301重定向(最好是从IIS)?
答案 0 :(得分:2)
您可以配置IIS URL重写模块以执行您需要的操作。请参阅this page上的第一项(我来的第一个搜索结果)。
我建议的另一个选择是你可以使用像@Url.Action("action", "controller")
之类的东西生成你的ajax请求,我认为应该为你处理斜线问题。如果您这样做,那么应该如何托管您的应用程序无关紧要,它应该可以正常工作。
使用jQuery的一个更全面的例子:
$.ajax({
type: "POST",
url: @Url.Action("action", "controller"),
data: $("form").serialize(),
success: function (result) {
...
},
failure: function () {
...
}
});