我已经设置了一个ASP.NET MVC RC2应用程序,以使用由CommonServiceLocator支持的自定义控制器工厂(使用StructureMap)。路由到和实例化控制器工作正常,但由于某种原因,我在尝试访问.js,.jpg或任何其他静态文件时遇到异常。
这是ControllerFactory代码:
public class CommonServiceLocatorControllerFactory : DefaultControllerFactory
{
protected override IController GetControllerInstance(Type controllerType)
{
return (controllerType == null) ?
base.GetControllerInstance(controllerType) :
ServiceLocator.Current.GetInstance(controllerType) as IController;
}
}
例外是:
无法找到路径'/someimage.jpg'的控制器,或者它没有实现IController。
如何让工厂或路由引擎绕过控制器工厂?
注意:我将使用IIS7 /集成模式,但VS2K8的内置Web服务器出现错误。
答案 0 :(得分:1)
问题实际上是由于404错误 - 我请求静态内容的路径不存在,并且基本控制器工厂无法处理请求,因为没有任何东西可以传递。
答案 1 :(得分:0)
我非常怀疑这与ControllerFactory有什么关系。我刚刚查看了DefaultControllerFactory.GetControllerInstance的源代码,我看不出这种覆盖可能会导致你所描述的错误。这可能是由于您配置路线的方式。看看您的路由配置,为其编写单元测试,如果仍然无法解决问题,请在此处发布您的路线。