2012-04-20 12 views
5

Recientemente actualicé mi aplicación web de MVC3 a 4 creando una nueva aplicación web en MVC4, y copiando todos los archivos, y finalmente fusionando el web.config. Todo funciona bien con la aplicación web existente, sin embargo, acabo de notar hoy un error muy extraño: si intento crear un nuevo controlador API con la implementación ficticia predeterminada, y luego buscar esa API (por ejemplo,/api/eventos), Me sale un error Could not load type. Lo extraño es que si uno vuelve a edificar la aplicación, y golpeó la URL de nuevo, parece ser un montaje diferente que se queja, principalmente, se alterna entre estos 2:Actualicé manualmente una aplicación web MVC de 3 a 4, no puedo agregar controladores API

Could not load type 'System.Web.Razor.Parser.SyntaxTree.CodeSpan' from assembly 'System.Web.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35'. 

y

Could not load file or assembly 'Microsoft.Scripting, Version=1.1.0.20, Culture=neutral, PublicKeyToken=7f709c5b713576e1' or one of its dependencies. The system cannot find the file specified. 

Mi web.config contiene la siguiente información de enlace de ensamblado:

<runtime> 
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1"> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Helpers" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.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> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.WebPages" publicKeyToken="31bf3856ad364e35" /> 
     <bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <!--<assemblyIdentity name="FluentValidation" publicKeyToken="a82054b837897c66" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-3.2.0.0" newVersion="3.2.0.0" />--> 
     <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" /> 
     <bindingRedirect oldVersion="0.0.0.0-4.0.8.0" newVersion="4.0.8.0" /> 
     </dependentAssembly> 
     <dependentAssembly> 
     <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
     <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
     </dependentAssembly> 
    </assemblyBinding> 
    </runtime> 

Y mi packages.config parece que tiene todos los bits de la derecha en él:

<package id="AspNetMvc" version="4.0.20126.16343" /> 
    <package id="AspNetRazor.Core" version="2.0.20126.16343" /> 
    <package id="AspNetWebApi" version="4.0.20126.16343" /> 
    <package id="AspNetWebApi.Core" version="4.0.20126.16343" /> 
    <package id="AspNetWebPages.Core" version="2.0.20126.16343" /> 
    <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" /> 
    <package id="Microsoft.Web.Optimization" version="1.0.0-beta" /> 
    <package id="System.Net.Http" version="2.0.20126.16343" /> 
    <package id="System.Net.Http.Formatting" version="4.0.20126.16343" /> 
    <package id="System.Web.Http.Common" version="4.0.20126.16343" /> 
    <package id="System.Web.Providers" version="1.1" /> 
    <package id="System.Web.Providers.Core" version="1.0" /> 

Incluso he intentado copiar por encima de mi web.config con un "vainilla" uno de una nueva aplicación mvc4 web, que todavía me da el mismo error (no podía cargar el archivo o Microsoft.Scripting montaje)

+0

¿tiene un montaje llamado Microsoft.Scripting, ¿verdad? ¿Y tienes una clase CodeSpan en el espacio de nombres System.Web.Razor.Parser.SyntaxTree? –

Respuesta

7

Trate de no incluir estas líneas de su web.config

<dependentAssembly> 
    <assemblyIdentity name="System.Web.Razor" publicKeyToken="31bf3856ad364e35" culture="neutral" /> 
    <bindingRedirect oldVersion="0.0.0.0-2.0.0.0" newVersion="2.0.0.0" /> 
</dependentAssembly> 
Cuestiones relacionadas