JQuery AJAX вызов метода контроллера JsonResult приводит к 404 на IIS6 - PullRequest
4 голосов
/ 30 июня 2010

Этим утром я вырывал свои волосы, пытаясь понять это.

У меня есть простой запрос jquery json к действию jsonresult на моем контроллере. Когда я запускаю это на моей локальной машине (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 не знает, как направить этот запрос?

Ответы [ 2 ]

4 голосов
/ 01 июля 2010

Хорошо, я понял это с помощью другого SO сообщения .

Проблема была с передачей URL. Очевидно, что он отличается от моей машины и сервера, на котором я развернут. Я смущен, что я не думал об этом.

Я изменил вызов $ .ajax с этого:

url: "/Customer/GetCityStateFromZip"

К этому, который использует Url.Action к правильному полному пути:

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

И все хорошо.

0 голосов
/ 30 июня 2010

Для URL-адресов без расширения в IIS 6 необходимо сопоставление с подстановочными знаками.Прочитайте эту запись в блоге для более подробной информации по настройке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...