asp.net-mvc-3 - tutorial - migrating from asp net mvc to asp net core mvc
Migrando mi aplicaciĆ³n MVC 3 a MVC 4 (9)
¿ Views/Web.Config
actualizar las referencias en Views/Web.Config
? Las referencias en él se utilizan para construir las páginas de vista.
Realmente no sé qué hacer, sigo este artículo que muestra cómo migrar mi aplicación MVC 3 manualmente.
Seguí todos los pasos pero al ejecutar mi aplicación aparece el siguiente error:
Error del servidor en la aplicación ''/''.
No se pudo cargar el archivo o ensamblado ''System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)
Descripción: se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.IO.FileLoadException: No se pudo cargar el archivo o ensamblado ''System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)
Error de fuente:
Se generó una excepción no controlada durante la ejecución de la solicitud web actual. La información sobre el origen y la ubicación de la excepción se puede identificar utilizando el seguimiento de pila de excepción a continuación.
Rastreo de carga de ensamblaje: la siguiente información puede ser útil para determinar por qué no se pudo cargar el ensamblado ''System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35''.
WRN: el registro de enlace de ensamblaje está APAGADO. Para habilitar el registro de fallas de enlace de ensamblaje, establezca el valor de registro [HKLM / Software / Microsoft / Fusion! EnableLog] (DWORD) en 1. Nota: Hay una cierta penalización de rendimiento asociada con el registro de fallas de enlace de ensamblaje. Para desactivar esta función, elimine el valor de registro [HKLM / Software / Microsoft / Fusion! EnableLog].
Stack Trace:
[FileLoadException: no se pudo cargar el archivo o ensamblado ''System.Web.WebPages.Razor, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'' o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040)]
Microsoft.Web.Samples.PreApplicationStartCode.Start () +0[InvalidOperationException: el método de inicialización de inicio de la preinstalación. Comience por el tipo Microsoft.Web.Samples.PreApplicationStartCode lanzó una excepción con el siguiente mensaje de error: No se pudo cargar el archivo o ensamblado ''System.Web.WebPages.Razor, Version = 1.0.0.0, Cultura = neutral, PublicKeyToken = 31bf3856ad364e35 ''o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040).]
System.Web.Compilation.BuildManager.InvokePreStartInitMethods (métodos ICollection`1) +423
System.Web.Compilation.BuildManager.CallPreStartInitMethods () +306
System.Web.Hosting.HostingEnvironment.Initialize (ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +677[HttpException (0x80004005): el método de inicialización de inicio de la aplicación anterior Comience en el tipo Microsoft.Web.Samples.PreApplicationStartCode lanzó una excepción con el siguiente mensaje de error: No se pudo cargar el archivo o ensamblado ''System.Web.WebPages.Razor, Version = 1.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 ''o una de sus dependencias. La definición del manifiesto del ensamblaje ubicado no coincide con la referencia de ensamblaje. (Excepción de HRESULT: 0x80131040).]
System.Web.HttpRuntime.FirstRequestInit (contexto HttpContext) +9079340 System.Web.HttpRuntime.EnsureFirstRequestInit (contexto HttpContext) +97 System.Web.HttpRuntime.ProcessRequestNotificationPrivate (IIS7WorkerRequest wr, HttpContext context) +256Información de la versión: Microsoft .NET Framework Version: 4.0.30319; Versión ASP.NET: 4.0.30319.237
Revisé el código, pero no veo ninguna referencia a System.Web.WebPages.Razor en la versión 1.0, versión 2.0 solamente.
¿Ha buscado globalmente System.Web.WebPages.Razor, Version = 1.0.0.0 en toda su solución? ¿ System.Web.WebPages.Razor
haciendo referencia a System.Web.WebPages.Razor
(Version 1.0.0.0)? ¿Hace referencia a System.Web.WebPages.Razor
Version 2.0.0.0?
[Actualización] Finalmente me encontré con el mismo problema. Parece que uno de los paquetes NuGet que instalé y desinstalé no eliminó completamente la referencia a System.Web.Razor
que usaba. La limpieza de la solución no ayudó porque el DLL no fue utilizado directamente por la aplicación web. Finalmente lo tengo que trabajar al eliminar manualmente todo el directorio bin ...
Compruebe el web.config dentro de su carpeta de vistas.
ACTUALIZAR:
Este bit parece sospechoso.
Microsoft.Web.Samples.PreApplicationStartCode
¿Hace referencia a cualquier biblioteca de aplicaciones de muestra, como futuros de MVC o algo así?
Este es otro paquete de Nuget que puede usar para actualizar mvc 3 a mvc 4 https://nuget.org/packages/UpgradeMvc3ToMvc4
Mi aplicación utilizó un paquete de terceros, AspNetSprites-MvcAndRazorHelper. Reinstaló este paquete y se corrigió el error de la referencia.
Reinstalar los paquetes de AspNetSprite como se sugirió anteriormente no resuelve el problema para mí. Pero la adición de estas líneas en la sección runtime / assemblyBinding del archivo raíz web.config funciona:
<dependentAssembly>
<assemblyIdentity name="System.Web.WebPages.Razor" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-2.0.0.0" newVersion="2.0.0.0" />
</dependentAssembly>
Supuse que tiene una aplicación web de Intranet MVC3, cuando se actualiza desde MVC3 a MVC4 usando NuGet, su aplicación ahora hace referencia a System.Web.WebPages.Razor Version 2.0.0.0, NO a System.Web.WebPages.Razor Version 1.0.0.0. Aquí está mi manera de resolver la referencia.
Hay dos lugares para arreglar:
En la raíz web.config,
<compilation debug="true" targetFramework="4.0"> <assemblies> . . . <add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" /> . . . </assemblies> </compilation>
cambie Version = 1 .0.0.0 a Version = 2 .0.0.0
Entonces su nueva referencia se verá así:
<compilation debug="true" targetFramework="4.0">
<assemblies>
. . .
<add assembly="System.Web.WebPages, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
. . .
</assemblies>
</compilation>
- En la carpeta Vistas , hay un archivo web.config. Al inspeccionar este archivo, verá que hace referencia a la Versión 1. Reemplace todo el archivo web.config en la carpeta Vistas con un nuevo archivo web.config . Haga una copia de seguridad del viejo archivo web.config, por si acaso. Para obtener un nuevo web.config para la carpeta Vistas, cree una nueva aplicación MVC4 para intranet. Ve a la carpeta Vistas. Copie el archivo Web.Config de la carpeta Vistas de la nueva aplicación a la carpeta Vistas de la aplicación rota.
¡Espero eso ayude!
Use NuGet y agregue el paquete Microsoft.AspNet.Mvc (Microsoft Asp.Net Mvc 4). Esto debería actualizar tus referencias. Ver:
Deberá actualizar las referencias de ensamblaje en su web.config.
Eliminar de la raíz web.config:
<assemblies>
<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<add assembly="System.Web.WebPages, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
</assemblies>
Agregar a la raíz web.config:
<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>
</assemblyBinding>
</runtime>
Vistas / Web.Config:
Cambiar Razor de 1.0.0.0 a 2.0.0.0:
<configSections>
<sectionGroup name="system.web.webPages.razor" type="System.Web.WebPages.Razor.Configuration.RazorWebSectionGroup, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<section name="host" type="System.Web.WebPages.Razor.Configuration.HostSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
<section name="pages" type="System.Web.WebPages.Razor.Configuration.RazorPagesSection, System.Web.WebPages.Razor, Version=2.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" requirePermission="false" />
</sectionGroup>
</configSections>
<host factoryType="System.Web.Mvc.MvcWebRazorHostFactory, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" />
<pages validateRequest="false"
pageParserFilterType="System.Web.Mvc.ViewTypeParserFilter, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
pageBaseType="System.Web.Mvc.ViewPage, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"
userControlBaseType="System.Web.Mvc.ViewUserControl, System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35">
<controls>
<add assembly="System.Web.Mvc, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35" namespace="System.Web.Mvc" tagPrefix="mvc" />
</controls>
</pages>
esto es muy simple, cuando actualiza a MVC 4.0.0.0, pero el webconfig en la solución aún apunta a MVC 3.0.0.0.0. así que simplemente reemplace MVC versión 3.0.0.0.0. por 4.0.0.0.0
Haga lo mismo con otros ensambles, para verificar la versión del ensamblaje, verifique las propiedades del ensamblaje respectivo en las referencias de su proyecto.