Подтвердить что ты не робот

Автоматически бросать 404 ошибки при отсутствии параметров для asp.net mvc

Я получаю следующую ошибку, когда бот Google приходит:

Словарь параметров содержит нулевую запись для параметра "id" типа, отличного от nullable, "System.Int32" для метода "System.Web.Mvc.ActionResult Show (Int32)" в "someclass". Необязательный параметр должен быть ссылочным типом, нулевым типом или объявлен как необязательный параметр.
Имя параметра: параметры

Мне было интересно, возможно ли в этом случае приложение throw 404 вместо отсутствия исключения параметра.

Спасибо!

Обновить, чтобы уточнить, что я хочу, так это то, что все случаи для этой конкретной ошибки вызывают ошибку 404 вместо 500. Предпочтительно, написав какую-то оболочку, которая только ловит эту ошибку.

4b9b3361

Ответ 1

public ActionResult Index(int? id)
{
   if(!id.HasValue())
   {
     throw new HttpException(404, "Are you sure you're in the right place?");
   }
}

Ответ 3

Это не новая статья, и я не могу обещать, что нет лучшего способа сделать это в недавних сборках MVC, но я думаю, что это довольно хорошая возможность:)

Я считаю, что вы должны иметь возможность написать настраиваемое связующее устройство, которое будет проверять, есть ли свойство идентификатора и которое требуется, и выбросить ошибку 404/отказаться от привязки, если она там отсутствует. Я знаю, что это не так много, но это может привести вас к правильному пути:)

P.S. Пример связующего примера +, как это работает, можно найти здесь:
http://weblogs.asp.net/melvynharbour/archive/2008/11/21/mvc-modelbinder-and-localization.aspx