代码之家  ›  专栏  ›  技术社区  ›  Pete Irfan TahirKheli

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

  •  1
  • Pete Irfan TahirKheli  · 技术社区  · 8 年前

    我在MVC网站项目中使用温莎城堡作为IoC。我通过执行以下操作将其初始化:

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

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

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

    这一切都很好,但现在当我点击一个不存在的url时,我不会收到404错误-我会收到以下错误消息:

    IControllerFactory的ProjectName.Website.Castle.IoC。CastleControllerFactory未返回名称为“asdasdasasdasd”的控制器。

    哪里 阿斯达斯 是无效url的名称

    有没有什么方法可以让它抛出404异常而不是castle windsor异常?

    1 回复  |  直到 8 年前
        1
  •  2
  •   Pete Irfan TahirKheli    8 年前

    在我的CastleController类中,我可以像这样抛出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);
        }
    }