使用 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);
}
}
我在我的 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);
}
}