使用 castle windsor 和 mvc 获取 404 错误页面

Get 404 error page with castle windsor and mvc

我在我的 MVC 网站项目中使用 Castle Windsor 作为 IoC。我通过执行以下操作对其进行了初始化:

new CastleInitialiser(new WindsorContainer().Install(FromAssembly.InDirectory(new AssemblyFilter(HttpRuntime.BinDirectory, "ProjectName*.dll"))));

然后在我的构造函数中,我有以下内容注册我的控制器:

Container.Register(CastleClasses.FromThisAssembly().IncludeNonPublicTypes().BasedOn<Controller>().LifestylePerWebRequest());

一切正常,但现在当我点击不存在的 url 时,我没有收到 404 错误 - 我收到以下错误消息:

The IControllerFactory 'ProjectName.Website.Castle.IoC.CastleControllerFactory' did not return a controller for the name 'asdasdasasdasd'.

其中asdasdasasdasd是无效的名字url

有什么方法可以让它抛出 404 异常而不是温莎城堡异常?

在我的 CastleController class 中,我可以像这样抛出 404:

public class WindsorControllerFactory : DefaultControllerFactory
{
    protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
    {
        if (controllerType == null) 
        {
           throw new HttpException(404, "page not found");
        }

        return (IController)container.Resolve(controllerType);
    }
}