URL-адрес PageMethod переписывается и плохо обрабатывается в IIS5.1. Есть ли исправление для этого, которое не включает создание WebService? - PullRequest
2 голосов
/ 24 ноября 2011

Эта проблема существует только в IIS5.1.Я нашел способ решения проблемы, но он не является удовлетворительным.Мне просто интересно, есть ли другие, немного менее очевидные решения.

Проблема в том, что у меня есть проект ASP.NET AJAX, интегрированный в решение ASP.NET MVC2.

У меня есть статическая функция на моей странице .aspx, которая помечена атрибутом WebMethod.Я называю это так:

window.PageMethods.set_path(window.pageURL);

window.PageMethods.EnableEditMode(function (result) {
    if (result) {
        $find(window.leftPaneID).expand(1);
        $('#' + window.startEditButtonID).hide();
        $('#' + window.finishEditButtonID).show();
    }
});

В IIS5.1 это приводит к 404, потому что Global.asax неправильно отображает маршрут.

Поэтому я добавил эту строку: routes.IgnoreRoute("{*allaspx}", new { allaspx = @".*\.aspx(/.*)?" });

Это было полезно, но не достаточно.Теперь я получаю 405 POST не допускается.Я немного почитал и обнаружил, что это из-за:

Extension: .* // Executable Path: %windir%\Microsoft.Net\Framework\v4.0.3031\aspnet_isapi.dll

Если я удалю эту строку в сопоставлениях конфигурации приложения IIS, мой PageMethod перестанет работать.Круто!

К сожалению, это полностью нарушает MVC-аспект веб-приложения - необходима перезапись URL.

К сожалению, методы PageMethods имеют то же расширение, что и действия MVC.Итак, я не уверен, что делать.

Я знаю, что прочитал и увидел, как некоторые люди используют WebServices для этого.Мы находимся на последнем этапе тестирования перед выпуском, и после разговора с моим боссом он не хочет идти по этому пути, поскольку нас беспокоит его сложность и необходимость повторного тестирования больше, чем хотелось бы.

Поэтому я ищу другие решения.Можно ли сделать что-то вроде:

routes.MapRoute(
    "Dashboard.aspx/EnableEditMode",
    "Dashboard.aspx/EnableEditMode"
);

, где я жестко кодирую ожидаемые методы страницы и обрабатываю их явно?Я знаю, что это некрасиво, но сейчас это будет просто.

Спасибо за чтение

РЕДАКТИРОВАТЬ: Решение состоит в том, чтобы перестать поддерживать IIS5, очевидно.:)

Ответы [ 2 ]

1 голос
/ 24 ноября 2011

Рассматривали ли вы обновление ваших дистрибутивов до IIS Express? Если они просто делают демонстрации, то для них это должно работать нормально, и вы вернетесь к нацеливанию на один SKU IIS.

1 голос
/ 24 ноября 2011

РЕДАКТИРОВАТЬ: Как упомянуто ниже Шоном, решение, которое работало: прекратить поддержку IIS 5.1:)

Вы прочитали это сообщение Скотта Хансельмана?

...