Asp.net MVC 3 FullCalendar Ajax вызовы не удается - PullRequest
0 голосов
/ 28 августа 2011

Мое простое тестовое приложение отлично работает на моем локальном сервере IIS.Когда я публикую его в своей среде общего хостинга (discountasp.net), вызов AJAX

$("#calendar").fullCalendar({
            eventSources: [{
                url: '/Home/GetCurrentMonth',
                type: 'Get',
                error: function () {
                    alert('there was an error while fetching events!');
                }
            }]

        });

завершится неудачно.Firebug показывает прибытие с правильными параметрами и выдает ошибку «404 Not Found».И я вижу, что метод контроллера 'GetCurrentMonth' никогда не вызывается (с некоторым введенным в него кодом журнала \ аудита).

Поскольку на моем локальном сервере IIS все работает нормально, и я не могу подключиться к IIS7Менеджер на удаленном сайте, чтобы получить «Отслеживание невыполненных запросов» .. Я как бы застрял.

Если нет волшебной настройки web.config (о, пожалуйста!), Я бы согласился на рекомендацию«Среда общего хостинга», которая поддерживает ASP.NET MVC 3, где работает FullCalendar, и я бы переместил приложение (моя текущая среда хостинга была менее чем полезной).

1 Ответ

4 голосов
/ 28 августа 2011

Никогда не используйте жесткий код, как вы. Всегда используйте помощники URL при генерации URL в приложении ASP.NET MVC:

$('#calendar').fullCalendar({
    eventSources: [{
        url: '@Url.Action("GetCurrentMonth", "Home")',
        type: 'GET',
        error: function () {
            alert('there was an error while fetching events!');
        }
    }]
});

Или, если это в отдельном файле javascript, в котором у вас нет доступа к коду на стороне сервера, можно использовать, например, атрибуты данных data5 * HTML5, например:

<div id="calendar" data-url="@Url.Action("GetCurrentMonth", "Home")"></div>

, а затем в вашем отдельном файле JavaScript:

$('#calendar').fullCalendar({
    eventSources: [{
        url: $('#calendar').data('url'),
        type: 'GET',
        error: function () {
            alert('there was an error while fetching events!');
        }
    }]
});

Бьюсь об заклад, 50 баксов причина, по которой ваш код не работает при его развертывании, заключается в том, что к IIS добавлен виртуальный каталог. Таким образом, правильный URL-адрес не /Home/GetCurrentMonth, а /YourApplicationName/Home/GetCurrentMonth. Чтобы избежать всех этих проблем, вы всегда должны использовать помощники при генерации URL.

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