Обратная передача, не работающая с Маршрутизацией ASP.NET (Проверка состояния отображения отказавший MAC)

Вместо использования Selenium выясните, какой запрос выполняет веб-сайт с использованием JavaScript (во время навигации перейдите на вкладку «Сеть» инструментов разработчика вашего браузера) и воспроизведите аналогичный запрос.

Веб-сайт использует JSON-запросы для извлечения элементов, которые гораздо проще анализировать, чем HTML.

Кроме того, если вы не знакомы с асинхронной природой Scrapy, вы, вероятно, получите неожиданные проблемы при использовании его в сочетании с Selenium.

Такие решения, как Splash или Selenium, предназначены для использования только в качестве последнего ресурса, когда все остальное терпит неудачу.

5
задан Ben Gottlieb 23 October 2008 в 15:00
поделиться

6 ответов

У меня была эта та же проблема, у меня был некоторый жулик

<form></form>

Подходили теги, после того как я не удалял их из своей страницы ошибка больше.

0
ответ дан 14 December 2019 в 04:50
поделиться
1
ответ дан 14 December 2019 в 04:50
поделиться

Я работал вокруг этого при наличии моего пользовательского элемента управления представления, наследовались этому классу вместо ViewUserControl<T> (это - своего рода патч для RenderView). Это добилось цели для меня, надо надеяться, это работает на Вас также.

public class ViewUserControlWithoutViewState<T> : ViewUserControl<T> where T : class {
    protected override void LoadViewState(object savedState) {}

    protected override object SaveControlState() {
        return null;
    }

    protected override void LoadControlState(object savedState) {}

    protected override object SaveViewState() {
        return null;
    }

    /// <summary>
    /// extracted from System.Web.Mvc.ViewUserControl
    /// </summary>
    /// <param name="viewContext"></param>
    public override void RenderView(ViewContext viewContext) {
        viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now);
        var containerPage = new ViewUserControlContainerPage(this);
        ID = Guid.NewGuid().ToString();
        RenderViewAndRestoreContentType(containerPage, viewContext);
    }

    /// <summary>
    /// extracted from System.Web.Mvc.ViewUserControl
    /// </summary>
    /// <param name="containerPage"></param>
    /// <param name="viewContext"></param>
    public static void RenderViewAndRestoreContentType(ViewPage containerPage, ViewContext viewContext) {
        string contentType = viewContext.HttpContext.Response.ContentType;
        containerPage.RenderView(viewContext);
        viewContext.HttpContext.Response.ContentType = contentType;
    }

    /// <summary>
    /// Extracted from System.Web.Mvc.ViewUserControl+ViewUserControlContainerPage
    /// </summary>
    private sealed class ViewUserControlContainerPage : ViewPage {
        // Methods
        public ViewUserControlContainerPage(ViewUserControl userControl) {
            Controls.Add(userControl);
            EnableViewState = false;
        }

        protected override object LoadPageStateFromPersistenceMedium() {
            return null;
        }

        protected override void SavePageStateToPersistenceMedium(object state) {}
    }
}

Я вел блог об этом некоторое время назад.

8
ответ дан 14 December 2019 в 04:50
поделиться

Я также нашел эту ошибку в asp.net mvc бетой. Это может быть очень воспроизведено. После создает asp.net mvc приложение с помощью шаблона по умолчанию, добавляет управление asp:button к странице home.aspx в режиме конструктора, поразило f5, домашняя страница отображена правильно. нажмите кнопку, эта ошибка обнаружится. После некоторой отладки в mvc исходный код я нашел, что это вызывается ViewUserControl на site.master странице, просто прокомментируйте <HTML %. RenderPartial ("LoginUserControl"); %>, затем событие щелчка может быть обработано правильно.

Я также нашел, что, устанавливая как enableViewStateMac = "ложь" enableEventValidation = "ложь" viewStateEncryptionMode = "Никогда" не полезна.

В mvc исходном коде дескриптор следующего раздела рендеринг ViewUserControl

общедоступный виртуальный пустой RenderView (ViewContext viewContext) {

// TODO: Remove this hack. Without it, the browser appears to always load cached output
viewContext.HttpContext.Response.Cache.SetExpires(DateTime.Now);
**ViewUserControlContainerPage containerPage = new ViewUserControlContainerPage(this);**
// Tracing requires Page IDs to be unique.
ID = Guid.NewGuid().ToString();
containerPage.RenderView(viewContext);

}

частный запечатанный класс ViewUserControlContainerPage: ViewPage {

public ViewUserControlContainerPage(ViewUserControl userControl) {
    Controls.Add(userControl);
}

}

ViewUserControl всегда представляют на недавно созданной контейнерной странице, эта страница не выберет Вашу установку. На самом деле, если шаг к этому разделу, вручную измените container.enableViewStateMac на ложь, действительно помогайте уничтожить ошибку. Таким образом, единственный способ решить его состоит в том, чтобы попросить, чтобы Microsoft изменила код mvc.

1
ответ дан 14 December 2019 в 04:50
поделиться

Вы используете сафари в качестве браузера? раз так затем это, вероятно, будет проблемой с большим плаванием. Удалите то плавание, и вещи будут хорошо работать.

-2
ответ дан 14 December 2019 в 04:50
поделиться

Просто попробуйте очистить файлы cookie на вашем локальном компьютере. Была такая же проблема, и это помогло.

0
ответ дан 14 December 2019 в 04:50
поделиться
Другие вопросы по тегам:

Похожие вопросы: