2012-04-25 14 views
0

У меня есть 3 приложений ASP.Net MVC, который использует JQuery .ajax позвонить в POST к действию контроллера на стороне сервера следующегоASP.Net MVC 3 JsonResult перенаправить ошибку

сторона клиента JQuery вызов:

//Page the server 
     $.ajax({ 
       url: '/Home/Call_Abort', 
       type: 'POST', 
       data: "{ 'op_id': '" + ajaxOPID + "', 'statMsg': '" + ajaxStatMsg + "'}", 
       contentType: 'application/json; charset=utf-8', 
       success: function (data) { 
         window.location.href = data.redirectUrl; 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
         alert("Error while paging the server to abort. Reported error: '" + xhr.responseText + "'."); 
       } 
     }); 

действия сервера управления:

[HttpPost] 
public JsonResult Call_Abort(string op_id, string statMsg) 
{ 
    return Json(new 
    { 
     redirectUrl = Url.Action("Operator_Home", "Home", new { op_id = op_id, status = statMsg }), 
     isRedirect = true 
    }); 

} 

Ответный URL должен перенаправить пользователя на другую точку зрения (т.е. Operator_Home View). Это работает на моем локальном компьютере разработки, маршрутизируясь в Operator_Home View, как ожидалось, но когда я запускаю его на своем веб-сервере разработки (Server 2008 с IIS 7) для тестирования, я получаю следующую страницу ошибок 404, заброшенную как xhr.responseText результат .ajax call выше.

enter image description here

Похоже, что происходит, вместо того, чтобы перенаправлять на View указываю в redirectURL (т.е. Operator_Home), он, кажется, думает действие контроллера Call_Abort предполагается вернуть Call_Abort View, так как no такой вид существует, ошибка ниже подбрасывается. Но почему это произойдет на веб-сервере, а не на моем локальном ПК, на котором работает сервер Visual Studio dev? Есть ли какая-то настройка, которую мне нужно настроить для моего приложения в IIS, чтобы заставить его вести себя так же, как на моей машине разработки. Мое понимание маршрутизации MVC недостаточно ясно, чтобы понять, почему это происходит. Любая помощь или проницательность оценены.

UPDATE

Мои извинения, есть несколько серверов я работаю с на моем месте employemnt, я ссылающийся на неверный веб-сервер. Сервер я бегу это на это сервер 2008 с IIS7

enter image description here

+0

Я удалил свой ответ, потому что я определенно не рассматриваю проблему с корнем. Я на самом деле не использовал IIS6 с MVC, поэтому я не могу ответить на то, что я считаю основной причиной. –

+0

Спасибо, Андрей, я на самом деле ошибся, у меня здесь несколько серверов, и я ссылался на неверный. Конкретным веб-сервером является Server 2008 с IIS 7. – kingrichard2005

+0

Если у вас есть точка останова приложения, можете ли вы опубликовать фактическую ошибку, имеющуюся на сервере после присоединения к ней? – mirezus

ответ

0

ошибка оказалась проблема с URL в тха .ajax позвонить я изменил URL следующим образом:

//Page the server 
var abortURL = window.location.origin + '/myApp/Home/Call_Abort'; 
     $.ajax({ 
       url: abortURL, 
       type: 'POST', 
       data: "{ 'op_id': '" + ajaxOPID + "', 'statMsg': '" + ajaxStatMsg + "'}", 
       contentType: 'application/json; charset=utf-8', 
       success: function (data) { 
         window.location.href = data.redirectUrl; 
       }, 
       error: function (xhr, ajaxOptions, thrownError) { 
         alert("Error while paging the server to abort. Reported error: '" + xhr.responseText + "'."); 
       } 
     }); 

Это разрешило проблему и разрешило jQuery завершить POST.

Смежные вопросы