ここで説明されているように、404 処理を実装しようとしています: 
https://stackoverflow.com/a/9026941/131809
私のEndRequestブロックには、これがあります:
public class MvcApplication : HttpApplication
{
    protected void Application_EndRequest()
    {
        if (Context.Response.StatusCode == 404)
        {
         //do stuff
        }
    }
}
ただし、間違いなく存在しない URL (/keyboardcat など) にアクセスしようとしても、StatusCodeは常に200 になります。
ただし、「デフォルト」の .net 404 ページは引き続き表示されます。