MVC4升级到MVC5时出现问题

乔科里安

我正在尝试将MVC4升级到MVC5,但是发生了奇怪的事情。我使用了一个不错的指南,发现所有内容都可以正常编译,但是当我尝试显示该网站时,出现此错误:

无法加载文件或程序集“ System.Web.Helpers”或其依赖项之一。找到的程序集的清单定义与程序集引用不匹配。(来自HRESULT的异常:0x80131040)

奇怪的是,当我查看对System.Web.Mvc,System.Web.Razor,System.Web.WebPages等的程序集引用时,它们仍然处于属于MVC4的版本号!我尝试重新安装相应的nuget软件包,这给了您希望获得的输出:

PM> Update-Package -reinstall -Id Microsoft.AspNet.Razor
Removing 'Microsoft.AspNet.Razor 3.2.3' from LabManager.Web.
Successfully removed 'Microsoft.AspNet.Razor 3.2.3' from LabManager.Web.
Uninstalling 'Microsoft.AspNet.Razor 3.2.3'.
Successfully uninstalled 'Microsoft.AspNet.Razor 3.2.3'.
Installing 'Microsoft.AspNet.Razor 3.2.3'.
You are downloading Microsoft.AspNet.Razor from Microsoft, the license agreement to which is available at http://www.microsoft.com/web/webpi/eula/net_library_eula_ENU.htm. Check the package for additional dependencies, which may come with their own license agreement(s). Your use of the package and dependencies constitutes your acceptance of their license agreements. If you do not accept the license agreement(s), then delete the relevant components from your device.

Successfully installed 'Microsoft.AspNet.Razor 3.2.3'.
Adding 'Microsoft.AspNet.Razor 3.2.3' to LabManager.Web.
Successfully added 'Microsoft.AspNet.Razor 3.2.3' to LabManager.Web.

这表明已安装了正确的版本。但是,仍然System.Web.Razor参考显示它的版本为2.0.0.0。另外,我正在为.NET版本4.5.1进行编译,但是System.Web.Razor的运行时版本仍显示4.0.3.0319。所有与MVC相关的程序集都一样(除了System.Web.Mvc的版本号是4.0.0.0而不是5.xxx)。

帮助!有人知道这里发生了什么吗?

编辑:这是我的Web.Config:

<?xml version="1.0" encoding="utf-8"?>
<!--

For more information on how to configure your ASP.NET application, please visit
          http://go.microsoft.com/fwlink/?LinkId=152368
          -->
<configuration>
  <configSections>

    <section name="entityFramework" type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
  <!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 --></configSections>
  <connectionStrings>
    <add name="LabManagerEntities" connectionString="metadata=res://*/Models.LabManagerEntities.csdl|res://*/Models.LabManagerEntities.ssdl|res://*/Models.LabManagerEntities.msl;provider=System.Data.SqlClient;provider connection string=&quot;Data Source=.\SQLServer;Initial Catalog=mne_labbeheer_prd1;Integrated Security=True;MultipleActiveResultSets=True&quot;" providerName="System.Data.EntityClient" />
    <add name="ApplicationServices" connectionString="Data Source=.\SQLServer;Initial Catalog=mne_labbeheer_prd1;Integrated Security=True" providerName="System.Data.SqlClient" />
  </connectionStrings>
  <appSettings>
    <add key="webpages:Version" value="3.0.0.0" />
    <!--<add key="webpages:Enabled" value="false" />-->
    <add key="PreserveLoginUrl" value="true" />
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    <!-- IP addresses allowed to view IP Address Restricted portions of the website. 
          An asterisk indicates an entire subnet is valid. -->
    <add key="AuthorizeIPAddresses" value="::1,127.0.0.1" />
  </appSettings>
  <!--
    For a description of web.config changes see http://go.microsoft.com/fwlink/?LinkId=235367.

    The following attributes can be set on the <httpRuntime> tag.
      <system.Web>
        <httpRuntime targetFramework="4.5.1" />
      </system.Web>
  -->
  <system.web>
    <globalization culture="en-US" />
    <compilation debug="true" targetFramework="4.5.1">
      <assemblies>
        <add assembly="System.Web.Abstractions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Helpers, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Routing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.Mvc, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Web.WebPages, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
        <add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
      </assemblies>
    </compilation>
    <authentication mode="Forms">
      <forms loginUrl="~/Account/LogOn" timeout="2880" />
    </authentication>
    <membership defaultProvider="DefaultMembershipProvider">
      <providers>
        <clear />
        <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />
      </providers>
    </membership>
    <profile defaultProvider="DefaultProfileProvider">
      <providers>
        <clear />
        <add name="DefaultProfileProvider" type="System.Web.Providers.DefaultProfileProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </profile>
    <roleManager enabled="true" defaultProvider="DefaultRoleProvider">
      <providers>
        <clear />
        <add applicationName="/" name="AspNetWindowsTokenRoleProvider" type="System.Web.Security.WindowsTokenRoleProvider" />
        <add name="DefaultRoleProvider" type="System.Web.Providers.DefaultRoleProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </roleManager>
    <pages controlRenderingCompatibilityVersion="5.0">
      <namespaces>
        <add namespace="System.Web.Helpers" />
        <add namespace="System.Web.Mvc" />
        <add namespace="System.Web.Mvc.Ajax" />
        <add namespace="System.Web.Mvc.Html" />
        <add namespace="System.Web.Routing" />
        <add namespace="System.Web.WebPages" />
      </namespaces>
    </pages>
    <httpRuntime maxRequestLength="104857600" />
    <!--
            If you are deploying to a cloud environment that has multiple web server instances,
            you should change session state mode from "InProc" to "Custom". In addition,
            change the connection string named "DefaultConnection" to connect to an instance
            of SQL Server (including SQL Azure and SQL  Compact) instead of to SQL Server Express.
      -->
    <sessionState mode="InProc" customProvider="DefaultSessionProvider">
      <providers>
        <add name="DefaultSessionProvider" type="System.Web.Providers.DefaultSessionStateProvider, System.Web.Providers, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="ApplicationServices" applicationName="/" />
      </providers>
    </sessionState>
  </system.web>
  <system.webServer>
    <validation validateIntegratedModeConfiguration="false" />
    <modules runAllManagedModulesForAllRequests="true">
      <remove name="RoleManager" />
    </modules>
    <security>
      <requestFiltering>
        <requestLimits maxAllowedContentLength="104857600" />
      </requestFiltering>
    </security>
  </system.webServer>
  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SqlServerCe.4.0" />
      <add name="Microsoft SQL Server Compact Data Provider 4.0" invariant="System.Data.SqlServerCe.4.0" description=".NET Framework Data Provider for Microsoft SQL Server Compact" type="System.Data.SqlServerCe.SqlCeProviderFactory, System.Data.SqlServerCe, Version=4.0.0.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91" />
    </DbProviderFactories>
  </system.data>
  <runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.AspNet" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="DotNetOpenAuth.Core" publicKeyToken="2780ccd10d57b246" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-4.3.0.0" newVersion="4.3.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Net.Http" publicKeyToken="b03f5f7f11d50a3a" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.WebData" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="WebMatrix.Data" publicKeyToken="31bf3856ad364e35" culture="neutral" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
      </dependentAssembly>
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="0.0.0.0-4.0.0.0" newVersion="4.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
    <!-- When targeting ASP.NET MVC 3, this assemblyBinding makes MVC 1 and 2 references relink
          to MVC 3 so libraries such as DotNetOpenAuth that compile against MVC 1 will work with it.
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
      -->
    <!-- When targeting ASP.NET MVC 3, this assemblyBinding makes MVC 1 and 2 references relink
          to MVC 3 so libraries such as DotNetOpenAuth that compile against MVC 1 will work with it.
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
      <dependentAssembly>
        <assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
        <bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.0" />
      </dependentAssembly>
    </assemblyBinding>
      -->
  </runtime>
  <entityFramework>
    <defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
      <parameters>
        <parameter value="mssqllocaldb" />
      </parameters>
    </defaultConnectionFactory>
    <providers>
      <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    </providers>
  </entityFramework>
</configuration>
乔科里安

事实证明,所引用的程序集不是mvc5 nuget程序包所安装的程序集,而是一堆名为'_bin_deployableAssemblies'的文件夹中的旧程序集。我只是删除了该文件夹,Visual Studio便确定了从何处获取新文件夹。与MVC相关的程序集的版本号现在可以正确显示,并且该应用程序可以像魅力一样运行。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

从4.2.0.RC3升级到4.2.0.RELEASE时出现Spring Async问题

将ASP.NET MVC从4升级到5的奇怪错误

从角度2升级到角度4.4时出现角度路由器问题

当我将Android Studio从3.1.4升级到3.2.0时会出现此问题

将angular从4升级到6时使用angular2-jwt和AuthHttp的问题

Laravel升级问题从5.2升级到5.7

从Babel v5升级到v6 +时出现“ TypeError不是构造函数”

将Angle从5.1升级到8后,NgStyle出现问题

从MVC2升级到MVC5项目

尝试从版本17.10升级到18.04时出现问题

错误:将14.04升级到14.10后,“连接到CUPS服务器时出现问题。”

ubuntu 12.04升级到12.10后出现问题

无法从17.10升级到18.04:计算升级时发生无法解决的问题

将Ubuntu 12.10升级到13.04时出现问题

从Ubuntu 11.10升级到12.04时出现问题;升级管理器似乎被绞死/卡住了

将MVC4升级到MVC5后删除的添加控制器选项

在ASP.NET MVC4中从Zurb Foundation 4升级到5。

MySQL:如果将ubuntu从10.04升级到12.04,我的Django应用程序会出现问题吗?

从.NET 4.5 MVC 4升级到.NET 4.5.2 MVC 5.2

使用ASPX / ASCX将MVC3升级到MVC5:继承问题

从0.14.0升级到1.0.0时出现Gradle问题

如何将mvc2升级到mvc5?

尝试将发行版Ubuntu 15.10升级到16.04时出现问题

将Django从1.6.5升级到1.8.4时出现的问题

将14.04升级到16.04时出现问题

是否可以将现有的MVC4 Web应用程序升级到MVC5?

从v1.6.3升级到IdentityServer3 v2.5后,GetProfileDataAsync出现问题

从php5升级到php7在运行脚本时遇到问题

升级到 struts 版本 2.5.17 时出现问题