Мой сайт сталкивается с нежелательным вызовом робота на определенный контроллер MVC с переменным именем действия. Это вызывает огромное исключение для удара в несексистское действие. Наша система регистрации практически захламлена.Эффективное управление неизвестным действием контроллера в MVC
Мы решили принять следующий подход как работу.
- эффективно обрабатывать запрос, не существует действие, так что не бросает исключение,
- дроссельной заслонки вниз робота вызова
Мы написали ниже код для достижения этой цели. Может ли кто-нибудь рассмотреть этот подход.
protected override void HandleUnknownAction(string actionName)
{
if (this.ActionInvoker.InvokeAction(this.ControllerContext,
"ReturnErrorForUnknownAction")) return;
}
public ActionResult ReturnErrorForUnknownAction()
{
return Task.Delay(2000).ContinueWith(t =>
{
return new HttpStatusCodeResult(System.Net.HttpStatusCode.NotFound);
}).Result;
}
Приведенный выше код работает отлично, но не уверен, что если «ReturnErrorForUnknownAction» является блокирующим вызовом. По моим знаниям Task.Result блокирует текущую нить.
Мое первоначальное намерение - реализовать асинхронную задержку перед отправкой статуса 404.
Я попытался выше код, но он выдает ошибку «** Дополнительная информация:. Асинхронном метод действия„“ReturnErrorForUnknownAction возвращает задачу, которая не может быть выполнена синхронно **» Ошибка приходит форма метод ** this.ActionInvoker.InvokeAction ** – user897062