asp.net-mvc – AJAX在IIS 7.5中返回404(本地),但在其他IIS中的功能相同

前端之家收集整理的这篇文章主要介绍了asp.net-mvc – AJAX在IIS 7.5中返回404(本地),但在其他IIS中的功能相同前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
在我的MVC应用程序中有AJAX调用我的控制器
Controller/FunctionName



$.ajax({
        type: "GET",contentType: "application/json; charset=utf-8",url: '/Controller/FunctionName',.
        .
        .
        )};

使用MVC 4并使用JQUERY Ajax函数,如上面的代码所示.当我从Visual studio运行时,它工作得很好.

我把它解散到服务器机器,正如预期的那样工作正常. AJAX调用中没有发现问题.

现在我试图在我的本地机器IIS中部署它,这与我的服务器版本(IIS 7.5)相同,但是在firebug中为所有的ajax调用获得404.

我验证了构建,甚至我指向我的网络文件夹,我仍然在寻找出了什么问题!

它在其他IIS中工作,所以它不会是一个URL解决问题是我的意图.我错过任何设置或任何及时的想法来解决这将是巨大的.

谢谢

解决方法

这是正常现象您已经将url硬编码到您的控制器操作:
url: '/Controller/FunctionName',

如果您将应用程序部署在IIS中的虚拟目录中,那么正确的URL应为:

url: '/YourAppName/Controller/FunctionName',

这就是为什么你绝对不要在ASP.NET MVC应用程序中硬编码url的原因,但是总是使用URL帮助来生成它:

url: '@Url.Action("FunctionName","Controller")',

如果这个AJAX调用是在一个单独的javascript文件中,你不能使用服务器端的帮助器,那么你可以从一些您要AJAXify的DOM元素中读取这个URL.

例如,假设你有一个锚点:

@Html.ActionLink("click me","FunctionName","Controller",null,new { id = "myLink" })

你AJAXify:

$('#myLink').click(function() {
    $.ajax({
        url: this.href,contentType: 'application/json; charset=utf-8',type: 'GET',.
        .
        .
    )};    
    return false;
});

注意我们如何从辅助程序生成的DOM元素中读取url.

结论和2条经验法则:

>永远不会在ASP.NET MVC应用程序中硬编码一个url>绝对总是在ASP.NET MVC应用程序中处理url时使用url helpers

猜你在找的asp.Net相关文章