使用CommonServiceLocator ControllerFactory的js,img文件的控制器/路由错误

时间:2009-03-18 02:29:28

标签: asp.net asp.net-mvc dependency-injection routing

我已经设置了一个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服务器出现错误。

2 个答案:

答案 0 :(得分:1)

问题实际上是由于404错误 - 我请求静态内容的路径不存在,并且基本控制器工厂无法处理请求,因为没有任何东西可以传递。

答案 1 :(得分:0)

我非常怀疑这与ControllerFactory有什么关系。我刚刚查看了DefaultControllerFactory.GetControllerInstance的源代码,我看不出这种覆盖可能会导致你所描述的错误。这可能是由于您配置路线的方式。看看您的路由配置,为其编写单元测试,如果仍然无法解决问题,请在此处发布您的路线。