使用MVC 5.1的MissingMethodException FileExistenceCache

时间:2014-05-06 10:10:46

标签: asp.net-mvc

我正在尝试从MVC 5.0升级到MVC 5.1。

在我的global.asax中,我有以下几行:

ViewEngines.Engines.Clear();
ViewEngines.Engines.Add(new WebSiteViewEngine(ConfigurationManager.AppSettings["ModulesPath"]));

第一行抛出异常 system.missingMethodException而: 未找到Méthod:'Void System.Web.WebPages.FileExistenceCache..ctor(System.Func`1,Int32)'。

在我的网络配置

<appSettings>
        <add key="webpages:Version" value="3.0.0.0" />
        <add key="webpages:Enabled" value="false" />       
 </appSettings>  

<runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <probing privatePath="modules/bin" />
            <dependentAssembly>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Practices.Unity" publicKeyToken="31bf3856ad364e35" culture="neutral" />
                <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
                <bindingRedirect oldVersion="1.0.0.0-5.1.0.0" newVersion="5.1.0.0" />
            </dependentAssembly>            
        </assemblyBinding> 
    </runtime>

我正在使用System.web.mvc 5.1.20129.0 System.Web.WebPage 3.0.20129.0

发生此错误的任何想法?

1 个答案:

答案 0 :(得分:2)

我也面临同样的问题,经过大量的搜索和反复试验,我已经解决了这个问题。

错误:

  

'System.Web.Mvc.ViewEngines'的类型初始化程序引发了一个   异常。

<强>堆栈跟踪:

  

System.TypeInitializationException未被用户代码
处理   HResult = -2146233036 Message =类型初始值设定项   'System.Web.Mvc.ViewEngines'抛出异常。
  Source = System.Web.Mvc TypeName = System.Web.Mvc.ViewEngines
  堆栈跟踪:          在System.Web.Mvc.ViewEngines.get_Engines()          在System.Web.Mvc.Controller.get_ViewEngineCollection()          在System.Web.Mvc.Controller.View(String viewName,String masterName,Object model)          在System.Web.Mvc.Controller.View()          位于d:\ Pallavi \ C3PO \ 3CPO \ Source中的C3PO.Web.Controllers.UserController.Index()   Code \ C3PO \ C3PO.Web \ Controllers \ UserController.cs:第39行          at C3PO.Test.HomeControllerTest.TestExtensionView()在d:\ Pallavi \ C3PO \ 3CPO \源代码\ C3PO \ C3PO.Test \ UnitTest1.cs:第71行
  InnerException:System.MissingMethodException          的HResult = -2146233069          Message =找不到方法:'Void System.Web.WebPages.FileExistenceCache..ctor(System.Func 1<System.Web.Hosting.VirtualPathProvider>, Int32)'. Source=System.Web.Mvc StackTrace: at System.Web.Mvc.BuildManagerViewEngine..ctor(IViewPageActivator viewPageActivator, IResolver 1 activatorResolver,IDependencyResolver   dependencyResolver,VirtualPathProvider pathProvider)               在System.Web.Mvc.BuildManagerViewEngine..ctor(IViewPageActivator   viewPageActivator)               在System.Web.Mvc.WebFormViewEngine..ctor(IViewPageActivator   viewPageActivator)               在System.Web.Mvc.WebFormViewEngine..ctor()               在System.Web.Mvc.ViewEngines..cctor()          的InnerException:

<强>结论:

我发现System.Web.Mvc版本5.1及更高版本的问题。 我已将其更改为使用System.Web.Mvc 5,现在一切正常。