【问题标题】:jquery ajax call to JsonResult controller method results in 404 on IIS6jquery ajax 调用 JsonResult 控制器方法导致 IIS6 上的 404
【发布时间】:2010-06-30 18:06:09
【问题描述】:

今天早上我一直在努力解决这个问题。

我对控制器上的 jsonresult 操作有一个简单的 jquery json 请求。当我在本地机器(IIS7)上运行它时,它工作正常。当我部署到运行 IIS6 的开发机器上时,出现 404 错误。

脚本:

$(function() {
            $('#search').click(function() {
                var zip = $('#zip').val();
                $.ajax({
                    type: "GET",
                    url: "/Customer/GetCityStateFromZip",
                    data: { zipcode: zip },
                    contentType: "application/json; charset=utf-8",
                    dataType: "json",
                    success: function(msg) {
                        $("#stateList").setCityState(msg);
                    }
                });
            });
        });

控制器:

public JsonResult GetCityStateFromZip(String zipcode)
        {
            List<CityState> list = new List<CityState>();
            foreach (var item in dt)
            {
                list.Add(new CityState(){City = item.City, StateCode = item.StateCode, StateName = item.StateName});
            }
             return this.Json(list);
        }

请求数据:

GET /Customer/GetCityStateFromZip?zipcode=85215 HTTP/1.1
Host: mydevserver
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US; rv:1.9.2.6) Gecko/20100625 Firefox/3.6.6
Accept: application/json, text/javascript, */*
Accept-Language: en-us,es-mx;q=0.7,en;q=0.3
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
X-Requested-With: XMLHttpRequest
Referer: http://mydevserver/Customer/Entry

响应数据:

HTTP/1.1 404 Not Found
Date: Wed, 30 Jun 2010 18:01:06 GMT
Content-Length: 1635
Content-Type: text/html
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET

在运行 IIS6 的开发服务器上,我设置了通配符映射 (C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\aspnet_isapi.dll) 并取消选中“验证该文件是否存在”。

我的 MVC 站点的所有其他方面都可以正常工作。我到处都在使用 jquery(验证、动画等),而且效果很好。我似乎无法超越这个 ajax 问题。

我需要在 IIS6 机器上解决其他一些设置或映射问题吗?也许 IIS6 不知道如何路由这个请求?

【问题讨论】:

    标签: c# asp.net-mvc json iis jquery


    【解决方案1】:

    好的,我在another SO post的帮助下想通了。

    问题在于正在传递的 URL。它显然不同于我的机器,以及我部署到的服务器。我很尴尬,我没有考虑到这一点。

    我从这里更改了 $.ajax 调用:

    url: "/Customer/GetCityStateFromZip"
    

    到此,即使用 Url.Action 到正确的完整路径:

    var url = '<%= Url.Action("GetCityStateFromZip","Customer") %>';
    url: url 
    

    一切都很好。

    【讨论】:

      【解决方案2】:

      对于 IIS 6 中的无扩展名 URL,您需要一个通配符映射。阅读this blog post 了解有关设置的更多详细信息。

      【讨论】:

      • 我已经设置了通配符映射。我更新了我的帖子以反映这一点。谢谢
      猜你喜欢
      • 1970-01-01
      • 2023-03-04
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 2019-06-19
      • 2011-06-22
      • 1970-01-01
      • 2016-02-01
      相关资源
      最近更新 更多