我的机器上的 StructureMap 工作正常。一切都很好......直到我请求一个不存在的资源。我得到一个 500 错误,而不是 404。
例如。http://localhost:6969/lkfhklsfhskdfksdf
检查网络,我被告知要修复我的结构图控制器类。做到了,很高兴!我现在得到-原始默认404黄屏页面-。好的,这比我的 500 错误页面要好。
但是,我希望它转到我的自定义 404 页面 :( 如果我在合法控制器上调用错误操作,我会得到我的自定义 404 页面。
在我的 global.asax 中,我有我的自定义路由,然后是默认路由,最后是 404 路由:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Post", action = "Index", id = "" } // Parameter defaults
);
// Invalid/Unknown route.
routes.MapRoute(
"404-ResourceNotFound",
"{*url}",
new { controller = "StaticContent", action = "ResourceNotFound" }
);
这是我的结构图控制器代码:
public class StructureMapControllerFactory: DefaultControllerFactory {
protected override IController GetControllerInstance(Type controllerType) {
if (controllerType != null) {
return ObjectFactory.GetInstance(controllerType) as Controller;
return base.GetControllerInstance(controllerType);
}
}
有任何想法吗?有什么方法可以让结构映射控制器工厂重新回到global.asax
路由列表中?还是我做了一些非常糟糕的事情,需要修复一些其他的东西。
干杯!