Результаты POST Ajax не найдены при использовании jqGrid и ASP.NET MVC 2 на IIS6 - PullRequest
1 голос
/ 12 мая 2010

Это озадачивает меня. Я развернул приложение MVC 2 на IIS6, и все работает отлично, за исключением моих вызовов jqGrid для получения данных.

Все хорошо на моей машине для разработки, но вот два URL, с которыми я работаю

Локальный веб-сервер разработчика:

POST http://localhost:port/Ctrl.mvc/JsonMethod

IIS6 (обратите внимание, https - не уверен, если это важно)

POST https://www.domain.com/AppName/Ctrl.mvc/JsonMethod

Последний URL приводит к HTTP 404, что действительно сбивает с толку, так как все хорошо работает на моем локальном компьютере. JsonMethod правильно объявлен с [AcceptVerbs(HttpVerbs.Post)]

Дайте мне знать, если потребуется дополнительная информация - я ценю любую помощь в этом!

РЕДАКТИРОВАТЬ Довольно упущение с моей стороны ..

Все мои JSON-запросы /Ctrl.mvc/JsonMethod. Ну, на сервере IIS код находится в подпапке - AppName. Таким образом, я получаю 404, потому что https://domain/Ctrl.mvc/JsonMethod не найден - что правильно.

По сути, мне нужно изменить мои JSON-запросы при развертывании - что мне действительно не нравится, но, возможно, есть лучший способ?

Ответы [ 3 ]

2 голосов
/ 13 мая 2010

Используйте помощники mvc, чтобы сгенерировать URL для функции jjGrid ajax, чтобы убедиться, что используется правильный URL.

$('#mygrid').jqGrid({ 
    url: '<%= Url.Action("MyControllerJsonAction", Model.RouteValues) %>' 
});
2 голосов
/ 12 мая 2010

Посмотрите на Развертывание asp.net mvc beta на iis 6, что вызывает 404 и http://blog.stevensanderson.com/2008/07/04/options-for-deploying-aspnet-mvc-to-iis-6/.

У вас есть больше URL в вашем приложении, где используется POST? Они работают? У вас есть больше URL-адресов без расширения, таких как .aspx или .mvc? Они работают?

ОБНОВЛЕНО : У меня была проблема с различными базовыми / корневыми частями моего URL во всех скриптах Java, подобных вам. Поскольку вы используете jqGrid, я думаю, что у вас та же проблема. Если я опубликую свое решение в виртуальном каталоге на веб-сервере, все URL-адреса, которые вызывают мои скрипты Java, будут изменены. Поэтому я даю window.location.pathname и делю его на '/', затем я обнаруживаю, что rootPath соответствует новому местоположению. Такой перебазирование URL-адресов я поместил в функцию, которую я вызываю внутри всех сценариев Java моего решения. Hire - это фрагмент кода, который отлично работает на моем сайте:

var pathArray = window.location.pathname.split( '/' );
var rootPath = '';
for (var i = 0; i < pathArray.length; i++) {
    var p = pathArray[i];
    if (p === "") {
        continue;
    }

    if (p.toLowerCase() !== 'home') {
        rootPath += '/';
        rootPath += p;
    } else {
        break;
    }
}
this.urlBase = rootPath + '/Repository.svc';
this.urlExportBase = rootPath + '/ExportToExcel';

Решение не идеальное, но оно работает. Возможно, вам следует изменить эту функцию «перебазирования», чтобы она работала на вашей стороне.

0 голосов
/ 27 июня 2014

Когда я использую релиз VS2012, мой проект (MVC + Kendo UI) для IIS6.0. Проблема выходит. Отладка F12: ошибка 404, Chrome сообщает, что страница не может быть найдена.

Это потому, что URL-адрес неверен, когда вы должны добавить Doamin в URL:

Правильный код:

function QueryExpSendList() {
var EValid = true;
var uri = AJAXBaseUrl;
if (AJAXBaseUrl.indexOf("localhost") > 0) {
    uri = AJAXBaseUrl + "AJAX/QuerySendList/";
}
else {
    uri = AJAXBaseUrl + "KQExpress/AJAX/QuerySendList/";
}
GenerateExpressSendGrid(uri);
$("#QueryResult").show();

}

Код ошибки:

function QueryExpSendList() {
var EValid = true;
var uri = AJAXBaseUrl + "AJAX/QuerySendList/";
GenerateExpressSendGrid(uri);
$("#QueryResult").show();

}

По sirili@163.com

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