двойная escape-последовательность внутри URL: модуль фильтрации запросов настроен на отклонение запроса, который содержит двойную escape-последовательность

В моем приложении ASP.NET MVC я пытаюсь реализовать URL-адрес, как показано ниже:

/ product / tags / для + семей

Когда я пытаюсь запустить свое приложение с конфигурациями по умолчанию, я получаю это сообщение с кодом ответа 404.11:

Ошибка HTTP 404.11 - не найдено

Модуль фильтрации запросов настроен на отклонение запроса, который содержит двойную escape-последовательность.

Я могу обойти эту ошибку, реализовав следующий код в моем web.config:

  <system.webServer>
    <security>
      <requestFiltering allowDoubleEscaping="true" />
    </security>
  </system.webServer>

Итак, теперь я не получаю 404.11 .

Что меня интересует, так это то, какие дыры в безопасности я открываю с помощью этой реализации.

Кстати, мое приложение работает под .Net Framework 4.0 и работает под IIS 7.5 .

78
задан tugberk 12 October 2011 в 11:18
поделиться

1 ответ

Альтернативная причина этой ошибки: Удостоверьтесь, что Вы ждете своих асинхронных методов!

Требуемый {контроллер} URL
http://localhost:XXXXX/ / {действие} / Система. Время выполнения. CompilerServices. AsyncTaskMethodBuilder '1+AsyncStateMachineBox' 1 [Система. Гуид, Microsoft. EntityFrameworkCore. Запрос. Внутренний. QueryCompiler+d __ 21'1 [Система. Гуид]]

Физический Путь
C: {проект }\\модели {определенная модель }\\Система. Время выполнения. CompilerServices. AsyncTaskMethodBuilder '1+AsyncStateMachineBox' 1 [Система. Гуид, Microsoft. EntityFrameworkCore. Запрос. Внутренний. QueryCompiler+d __ 21'1 [Система. Гуид]]

, Когда я называл return RedirectToAction(nameof(GrandParents), new { id = grandParentId });, что должно было быть Гуидом, не был, потому что вызов для получения Гуида иначе grandParentId не ожидался

Пример кода ниже:

[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> CreateThing(ThingViewModel thingVM)
{
  if (ModelState.IsValid)
  { //I forgot to await here, which wasn't the worst thing...
    var toCreate = await CreateThingAsync(thingVM);

    if(toCreate == null){ return View(thingVM); }

    // I forgot to await here too, so instead of returning a Guid, it returned
    // System.Runtime.CompilerServices.AsyncTaskMethodBuilder'1+AsyncStateMachineBox'1[System.Guid...
    var grandParentId = await _context.ParentThings.AsNoTracking().Where(x => x.Id == thingVM.ParentId).Select(y => y.ParentId).FirstOrDefaultAsync();

    // So this call was unhappy
    return RedirectToAction(nameof(GrandParents), new { id = grandParentId });
  }
  return View(thingVM);
}
0
ответ дан 24 November 2019 в 10:40
поделиться
Другие вопросы по тегам:

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