使用MVC 5和StructureMap“找不到入口点”

时间:2013-12-13 18:19:05

标签: c# asp.net asp.net-mvc structuremap asp.net-mvc-5

我正在使用StructureMap 2.6.4.1新的MVC 5项目。以前,在MVC 4项目中,我们的设置工作正常。

我们有一个SM控制器工厂,例如:

public class StructureMapControllerFactory : DefaultControllerFactory
    {
        protected override IController GetControllerInstance(RequestContext requestContext, Type controllerType)
        {
            var instance = ObjectFactory.GetInstance(controllerType) as IController;

            if (instance == null)
            {
                return base.GetControllerInstance(requestContext, controllerType);
            }

            return instance;
        }
    }

Global.asax.cs 中,在app start中,我们将其设置为:

    ControllerBuilder.Current.SetControllerFactory(new StructureMapControllerFactory());

The issue is, if this last line is enabled in app start, we get this:

**[EntryPointNotFoundException: Entry point was not found.]**
   System.Web.Mvc.IControllerFactory.GetControllerSessionBehavior(RequestContext requestContext, String controllerName) +0
   System.Web.Mvc.MvcRouteHandler.GetSessionStateBehavior(RequestContext requestContext) +131
   System.Web.Mvc.MvcRouteHandler.GetHttpHandler(RequestContext requestContext) +33
   System.Web.Mvc.MvcRouteHandler.System.Web.Routing.IRouteHandler.GetHttpHandler(RequestContext requestContext) +10
   System.Web.Routing.UrlRoutingModule.PostResolveRequestCache(HttpContextBase context) +9767524
   System.Web.Routing.UrlRoutingModule.OnApplicationPostResolveRequestCache(Object sender, EventArgs e) +82
   System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +136
   System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +69

同样,这在我们的MVC 4项目中运行得很好,但是我找不到与MVC 5相关的足够信息。我不想回到MVC 4,但是如果必须的话。感谢。

2 个答案:

答案 0 :(得分:2)

这可能是装配问题的一个版本

您需要将程序集更改为最新版本

请参阅此Entry point was not found exception

答案 1 :(得分:1)

修正了我自己的问题。出于某种原因,当我创建一个新的MVC5项目时,它仍然引用旧的WebPages 2.0和MVC 4程序集。不知道为什么。我通过nuget运行了更新,它修复了问题(它还将其他现有的MVC4应用程序更新为5个没有问题)。

Ramesh,从技术上讲,你的回答是正确的。