Проверка типа аргумента действия в ASP.NET MVC - PullRequest
0 голосов
/ 08 апреля 2019

У меня есть метод Action, принимающий значение long в моем контроллере:

public virtual ActionResult GetInfo(long Id)

Если кто-то перехватывает запрос POST / GET (например, изменяя GetInfo? Id= 23 до GetInfo? Id = THIS_IS_A_STRING ), ответ содержит трассировку стека ошибки.

Как этого избежать?Как перехватить через контроллер неверный аргумент и перенаправить пользователя на другую страницу?

1 Ответ

0 голосов
/ 08 апреля 2019

Первое, что я хотел бы сделать, это добавить собственный обработчик ошибок к web.comfig.Примерно так:

<system.web>
   <customErrors mode="On" defaultRedirect="~/ErrorHandler/Index">
     <error statusCode="404" redirect="~/ErrorHandler/NotFound"/>
   </customErrors>
<system.web/>`

Это обработает все ошибки, которые вы пропустили, и не позволит отображать системные сообщения об ошибках для ваших пользователей.

Далее я бы использовал контроллер MVC OnException для настройки реагирования на ошибки,

public class UserMvcController : Controller
   {
      protected override void OnException(ExceptionContext filterContext)
      {
         filterContext.ExceptionHandled = true;

         //Log the error!!
         _Logger.Error(filterContext.Exception);

         //Redirect
         filterContext.Result = RedirectToAction("Index", "ErrorHandler");
         {
            ViewName = "~/Views/ErrorHandler/Index.cshtml"
         };
      }
   }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...