Bezdepbonusu7Программирование: статьи и ответы

Вопрос

Ошибка WebResource.axd - это недопустимый запрос веб-ресурса.

Автор вопроса: kristianОтветов: 1

У меня есть большое веб-приложение .NET 2, которое было обновлено для работы с платформой .NET 4.0. С момента обновления я регулярно вижу в журналах следующую ошибку:

Это недействительный запрос веб-ресурса.

Запрошенный ресурс - "~ / WebResource.axd". Насколько я могу судить, запрос выглядит нормально, поскольку есть длинная строка запроса с ключами (ключи - d, t) и значения для этих ключей.

Изменился ли механизм генерации запросов к WebResource.axd между версиями фреймворка? Есть ли у кого-нибудь совет о том, как решить эту проблему?

Изменить: я нашел способ расшифровать строку запроса запроса веб-ресурса (код следует). Запрошенный ресурс - pCSSFriendly|CSSFriendly.CSS.Menu.css, что похоже на проблему с обращением к ресурсу CSSFriendly.MenuAdapter, который используется приложением. Похоже, что эта ведущая буква "p" может быть проблемой.

private string DecryptWebResource(string urlEncodedData)
{
    byte[] encryptedData = HttpServerUtility.UrlTokenDecode(urlEncodedData);
    Type machineKeySection = typeof(MachineKeySection);
    Type[] paramTypes = new Type[] { typeof(bool), typeof(byte[]), typeof(byte[]), typeof(int), typeof(int) };
    System.Reflection.MethodInfo encryptOrDecryptData = machineKeySection.GetMethod("EncryptOrDecryptData", System.Reflection.BindingFlags.Static | System.Reflection.BindingFlags.NonPublic, null, paramTypes, null);

    try
    {
        byte[] decryptedData = (byte[])encryptOrDecryptData.Invoke(null, new object[] { false, encryptedData, null, 0, encryptedData.Length });
        string decrypted = Encoding.UTF8.GetString(decryptedData);
        return decrypted;
    }
    catch (System.Reflection.TargetInvocationException)
    {
    }

    return String.Empty;
}
  • вы видите, что пользовательский агент делает запрос в ваших журналах? Является ли пользовательский агент ботом, а не обычным браузером. Если это браузер, всегда ли это конкретный браузер? Shiv Kumar 14.02.2011
  • Есть ли шанс, что вы можете использовать фактический URL-адрес запроса (с любыми изменениями, которые вам требуются)? Shiv Kumar 14.02.2011
  • @Shiv - пользовательский агент - это не бот, не конкретный браузер. фактический запрашиваемый URL-адрес: /WebResource.axd?d=mMV7RYieQ41tpTxPsIlhBcWLOEc_3Zk34EIeVXcAdmd_v2A7LNXIx4APFE1uwxEunSxoFByBQlJC-llRVaRlDyz7c09C08C08C08C08C08C08C08C08C08C08 kristian 15.02.2011
  • У меня здесь такая же проблема. Новый сервер, тот же код (копирование / вставка всего сайта) работает на предыдущем сервере. Однажды я столкнулся с этой проблемой, но не могу вспомнить, как я ее решил. thomasb 10.11.2011
  • После прочтения этого сообщения: stackoverflow.com/questions/5676232/ Я заметил, что сервер был даже не в нужный месяц (он указывал июнь, а мы находимся в ноябре). Я починил, и ... работает! Очень странно. thomasb 10.11.2011
  • Нет, проблема не в ведущем p: я пытался расшифровать параметр d рабочих запросов WebResource, и ведущий p тоже присутствует. lencinhaus 09.02.2012

Ответы

Ответ 1 · рейтинг 2 · Craig A

Изменился ли механизм генерации запросов к WebResource.axd между версиями фреймворка?

Очевидно, что применение обновлений безопасности (и, конечно, изменение основных версий фреймворка) может изменить взаимодействие клиент-сервер с использованием WebResource.axd таким образом, чтобы вызвать эту ошибку. Мы увидели эту ошибку после применения исправлений, и причиной, похоже, является кеширование на стороне клиента http://forums.asp.net/t/1609380.aspx - ошибки исчезли через 30 дней или около того.

Перевод вопроса и ответов сообщества Stack Overflow, лицензия CC BY-SA. Оригинал на Stack Overflow.

Похожие материалы