PageMethod 404 только на развернутом веб-сайте под XP / IIS 5.1. Какие настройки безопасности мне следует знать? - PullRequest
3 голосов
/ 19 ноября 2011

Прошло несколько дней, и это, в основном, иссякло от лидов.

Вот код:

[WebMethod]
public static bool EnableEditMode()
{
    bool successful = false;

    try
    {
        GlobalSettings globalSettings = StateManager.GetStates<GlobalSettings>();
        globalSettings.EditModeEnabled = true;
        StateManager.SaveGlobalSettings(globalSettings);
        successful = true;
    }
    catch (Exception exception)
    {
        _logger.ErrorFormat("Unable to enable edit mode. Reason: {0}", exception.Message);
    }

    return successful;
}

function EnableEditMode() {
    $.ajax({
        type: "POST",
        url: "Dashboard.aspx/EnableEditMode",
        data: "{}",
        contentType: "application/json; charset=utf-8",
        dataType: "json",
        success: function (result) {
            if( result ) {
                $find(window.leftPaneID).expand(1);
                $('#' + window.startEditButtonID).hide();
                $('#' + window.finishEditButtonID).show();
            }
        }
    });
}

Вот сообщение об ошибке:

Не удалось загрузить ресурс: сервер ответил с состоянием 404 (не найдено) http://localhost/csweb/Dashboard/Dashboard.aspx/EnableEditMode

Вот что я пробовал:

  • Гарантировано, что я обновляюсь с помощью обновлений Windows. Источник

  • Я удалил «EnablePageMethods = True» из моего ScriptManager и начал использовать POST jquery ajax для выполнения кода.Ничего не сломалось, когда я это сделал, заголовки немного изменились, но ничего не исправлено.

  • Я пытался использовать <%= ResolveUrl("~/Dashboard/Dashboard.aspx") %>, но путь не изменился, и я не заметил эффекта,поэтому я удалил код. Источник

  • Я зашел в свой файл web.config и удалил следующее в соответствии с Источник :

    <authorization>
        <deny users="?"/>
    </authorization>
    
  • Я гарантировал, что файл не доступен для чтения, и предоставил права полного доступа к файлу и родительским папкам для всех соответствующих пользователей в системе.(Не живая система, так что не беспокойтесь ... просто играю).

  • Я различал заголовки запросов между моей рабочей разработкой и нерабочим развертыванием - я не видел различий взаголовки запроса.

  • Я запустил мастер разрешений на веб-сайте, указал, что хочу иметь параметры безопасности веб-сайта для публично просматриваемого веб-сайта, и применил ко всем папкам замену текущих параметров безопасности.Без эффекта.

  • Добавлен .json // application / json MIME-тип, без эффекта, но я оставил его, так как он показался полезным.

На данный момент я подхожу к походу в пропасть настроек, которая является IIS.Я не очень знаком с IIS 5.1, хотя.Итак, мне интересно, есть ли какие-то конкретные места, которые я должен начать искать?

Я нашел причину, но я работаю над выяснением, как это исправить.У меня есть приложение ASP.NET AJAX, интегрированное в решение MVC.MVC - это использование PageMethod и неправильная его обработка, но только в IIS 5.1:

[HttpException]: The controller for path &#39;/csweb/Dashboard/Dashboard.aspx/EnableEditMode&#39; was not found or does not implement IController.

1 Ответ

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

Вы используете ASP.NET MVC?Вам может понадобиться [AcceptVerbs ("POST")] на EnableEditMode().

Кроме того, не могли бы вы просто распечатать (или отладить и просмотреть) результаты:

var pageURL = "<%= ResolveUrl("~/Dashboard/Dashboard.aspx") %>
var pageURL2 = "<%= ResolveUrl("~") %>
...