Это должно очень помочь ...
Как я могу правильно обработать 404 в ASP.NET MVC?
... и я бы порекомендовал вам пойтис таким подходом.
Я думаю, то, что вы пытаетесь сделать, скорее всего, идет вразрез с ASP.NET MVC или, по крайней мере, представляет что-то, что не будет очевидно для других, смотрящих наваш код.
Вы можете достичь чего-то похожего на то, что вы хотите, используя пользовательские ошибки.В web.config вы можете сделать что-то вроде этого ..
<customErrors mode="On" >
<error statusCode="404" redirect="~/Views/Shared/NotFound.aspx" />
</customErrors>
... но поскольку эта страница aspx находится в папке Views, вы должны зайти в web.config, который находится в папке Views иостановите его от предотвращения прямого доступа к представлениям.
Если эта страница (NotFound.aspx) записана как представление MVC, у вас будут проблемы.Вы обнаружите, что некоторые вещи (например, this.Html) могут быть настроены неправильно.
Учитывая, что вы получаете доступ к этому файлу, как к классическому ASP.NET, вы можете захотеть написать его как классический ASP.NET и оставить его вне папки Views.
Наконец, вы можете использовать другой режим перенаправления ...
<customErrors mode="On" redirectMode="ResponseRewrite" >
... так, чтобы ваш 404-й URL соответствовал запрашиваемой странице.