No se pudo cargar el archivo o ensamblado 'System.Web.Mvc'

200

Mi nueva aplicación web ASP.NET MVC funciona en mi estación de trabajo de desarrollo, pero no se ejecuta en mi servidor web ...


Error del servidor en la aplicación '/'.


Error de configuración

Descripción: se produjo un error durante el procesamiento de un archivo de configuración requerido para atender esta solicitud. Revise los detalles de error específicos a continuación y modifique su archivo de configuración adecuadamente.

Mensaje de error del analizador: No se pudo cargar el archivo o ensamblado 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.

Error de fuente:

Line 44:         <add assembly="System.Web.Abstractions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 45:         <add assembly="System.Web.Routing, Version=3.5.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 46:         <add assembly="System.Web.Mvc, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>
Line 47:         <add assembly="System.Data.DataSetExtensions, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>
Line 48:         <add assembly="System.Xml.Linq, Version=3.5.0.0, Culture=neutral, PublicKeyToken=B77A5C561934E089"/>

Archivo de origen: C: \ inetpub \ www.example.org \ web.config Línea: 46

Rastreo de carga de ensamblaje: la siguiente información puede ser útil para determinar por qué no se pudo cargar el ensamblado 'System.Web.Mvc, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35'.

WRN: el registro de enlace de ensamblado está APAGADO.
Para habilitar el registro de errores de enlace de ensamblaje, establezca el valor de registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog] (DWORD) en 1.
Nota: Hay algunas penalizaciones de rendimiento asociadas con el registro de fallas de enlace de ensamblaje.
Para desactivar esta función, elimine el valor del registro [HKLM \ Software \ Microsoft \ Fusion! EnableLog].

Información de la versión: Microsoft .NET Framework Versión: 2.0.50727.3053; Versión de ASP.NET: 2.0.50727.3053


¿Debo instalar AspNetMVCBeta-setup.msi en el servidor? ¿O hay un instalador diferente para los servidores?

ingrese la descripción de la imagen aquí

Zack Peterson
fuente

Respuestas:

215

Acabo de escribir una publicación de blog sobre esto. Puede instalar ASP.NET MVC en su servidor O puede seguir los pasos aquí .


EDITAR: (por jcolebrand) Revisé este enlace, luego tuve el mismo problema que Victor a continuación , así que sugiero que también agregue estos:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor
Hackeado
fuente
66
Nota: Cuando tenga instalado MVC4 (beta actualmente), querrá obtener la v1.0 de esas DLL, también querrá obtener System.Web.Helpers (al menos lo necesitaba).
Rastreador1
1
-1 Su publicación a la que vincula, no explica cómo llevar la Infraestructura Microsoft.Web al servidor web a través del mecanismo de Publicación. Tener que instalar cosas en un servidor directamente, un poco sux.
Mark Rogers
1
con Visual Studio 2010 esto se ha vuelto mucho más fácil como se explica aquí: britishdeveloper.co.uk/2011/06/…
Daniël Tulp
o aquí si no está utilizando Web Deploy britishdeveloper.co.uk/2011/05/…
Jeroen K
Tuve que manipular la carpeta bin y luego volver a publicar, es decir, si no está utilizando Deploy Package.
Robert Koch
41

Me encontré con el mismo problema que sgriffinusa. Además de las referencias, el artículo de Phil sugiere: http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx . Agregué estos:

* Microsoft.Web.Infrastructure
* System.Web.Razor
* System.Web.WebPages.Deployment
* System.Web.WebPages.Razor

La implementación de Godaddy funcionó perfectamente. Desactive los errores personalizados y agregue referencias para corregir los errores. Eso debería guiarte en la dirección correcta.

Victor Juri
fuente
26

Instalar MVC directamente en su servidor web es una opción, ya que los ensamblajes se instalarán en el GAC. También puede desplegar los ensamblajes, lo que podría ayudar a mantener su servidor libre de ensamblajes previos al lanzamiento hasta que esté disponible una versión final.

Phil Haack publicó un buen artículo hace un par de días sobre cómo implementar MVC junto con su aplicación, por lo que no es necesario instalarlo directamente:

http://www.haacked.com/archive/2008/11/03/bin-deploy-aspnetmvc.aspx

Matt Rudder
fuente
25

Me encontré con este mismo problema al tratar de implementar mi aplicación web MVC3 Razor en el alojamiento compartido GoDaddy. Hay algunos .dlls adicionales que deben ser referenciados. Detalles aquí: http://paulmason.biz/?p=108

Básicamente, debe agregar referencias a lo siguiente, además de las enumeradas en la publicación de @ Haacked, y configurarlas para que se implementen localmente como se describe.

  • Microsoft.Web.Infrastructure
  • System.Web.Razor
  • System.Web.WebPages.Deployment
  • System.Web.WebPages.Razor
sgriffinusa
fuente
¡Gracias, después de agregar manualmente la referencia y luego implementarla localmente, solucionó el problema para MVC3!
Stefanvds
Lo mismo aqui. Buena guía para agregar esas DLL adicionales. ¡Gracias!
Mike L
Lo mismo aqui. No en GoDaddy, sino en el servidor de mi empresa, por lo que este debe ser un caso simple.
TJKjaer
13

En VS2010, haga clic con el botón derecho en el proyecto en el Explorador de soluciones y seleccione 'Agregar dependencias implementables'. Luego marque las casillas de verificación relacionadas con MVC en el siguiente cuadro de diálogo.

Esto crea una carpeta '_bin_deployableAssemblies' en el proyecto que contiene todos los archivos .dll mencionados en otras respuestas. Creo que estos se copian en la carpeta bin al crear un paquete de implementación.

warrickh
fuente
9

Solución simple En VS2010, haga clic derecho en su proyecto MVC, seleccione "Agregar dependencias desplegables ...", seleccione las opciones que desee y haga clic en Aceptar

Eje
fuente
8

Solución rápida y simple: Enfrenté este problema con Microsoft.AspNet.Mvc -Version 5.2.3 y después de revisar todos estos hilos encontré una solución más simple.

Solo sigue los pasos:

  1. Abra NuGet Package Manager en Visual Studio para su proyecto
  2. Busque Microsoft.AspNet.Mvc
  3. Cuando lo encuentre, cambie la acción a Desinstalar y Desinstalarlo
  4. Una vez hecho esto, instálalo de nuevo y pruébalo ahora

Esto solucionará automáticamente todos los problemas con referencias. Ver imagen a continuación:

ingrese la descripción de la imagen aquí

Muhammad Amir
fuente
7

Tuve el mismo problema y agregué todo el ensamblaje que dijeron, pero aún obtuve el mismo error.

Resulta que necesitas hacer la " Versión específica " = False.

La versión específica debe ser falsa.

Romeo
fuente
Alternativamente, usted debe cambiar 'copia local' a 'True' si no está activada,
AStopher
6

Queremos agregarlo porque estamos creando una biblioteca de clases que lo usa.

Para mi está aquí ...

C:\Program Files (x86)\Microsoft ASP.NET\ASP.NET MVC 4\Assemblies

Dave Shinkle
fuente
3

Si NO está utilizando un proveedor de alojamiento y tiene acceso al servidor para instalar ... Luego instale las herramientas de actualización MVC 3, hágalo ... le ahorrará horas de problemas en un servidor Windows 2003 / máquina IIS6. , Comenté en esta página aquí El número de versión de Nuget.Core.dll no coincide

Tom Stickel
fuente
3

Además de la publicación de Haack, Hanselman también tiene una publicación similar. BIN Despliegue ASP.NET MVC 3 con Razor a un servidor Windows sin MVC instalado

Para mí, la solución "Copiar local = verdadero" era insuficiente porque las referencias del proyecto de mi sitio web no incluían todos los dlls que faltaban. Como Scott menciona en su publicación, también necesitaba obtener dlls adicionales de la siguiente carpeta en mi cuadro de desarrollo: C: \ Archivos de programa (x86) \ Microsoft ASP.NET \ ASP.NET Web Pages \ v1.0 \ Assemblies. El mensaje de error me informó qué dll faltaba (System.Web.Infrastructure, System.Web.Razor, etc.) Continué agregando cada dll faltante, uno por uno, hasta que funcionó.

James Lawruk
fuente
3

Hice un "Paquete de actualización: reinstalar Microsoft.AspNet.Mvc" para solucionarlo en Visual Studio 2015.

Olaj
fuente
3

Una consideración importante es el archivo web.config, algunos paquetes pueden alterar sus redireccionamientos de enlace causando estragos (el paquete falso estaba en el paquete interno que no eliminé web.config del paquete o me aseguré de que web.config esté en el paquete no tiene redireccionamientos vinculantes. Por ejemplo, al eliminar el nodo duplicado e incorrecto se resuelve esto

    <runtime>
        <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
            <dependentAssembly>
                <assemblyIdentity name="System.Web.WebPages" 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.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Microsoft.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
                <assemblyIdentity name="WebGrease" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.6.5135.21930" newVersion="1.6.5135.21930"/>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>


                <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.Mvc" publicKeyToken="31bf3856ad364e35"/>
                <bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Newtonsoft.Json" publicKeyToken="30ad4fe6b2a6aeed" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-9.0.0.0" newVersion="9.0.0.0"/>
            </dependentAssembly>
            <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.Owin.Security.Cookies" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Microsoft.Owin.Security.OAuth" publicKeyToken="31bf3856ad364e35" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.0.1.0" newVersion="3.0.1.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="SimpleInjector" publicKeyToken="984cb50dea722e99" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.3.2.0" newVersion="3.3.2.0"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="Antlr3.Runtime" publicKeyToken="eb42632606e9261f" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-3.5.0.2" newVersion="3.5.0.2"/>
            </dependentAssembly>
            <dependentAssembly>
                <assemblyIdentity name="HtmlAgilityPack" publicKeyToken="bd319b19eaf3b43a" culture="neutral"/>
                <bindingRedirect oldVersion="0.0.0.0-1.4.9.5" newVersion="1.4.9.5"/>
            </dependentAssembly>
        </assemblyBinding>
    </runtime>

quitando las líneas 8 a 24 corrige la construcción.

PBo
fuente
2

Compruebe también la versión del ensamblaje en web.config dentro de su carpeta Vistas y asegúrese de que coincida. A veces olvido que hay una segunda web.config en esa ubicación.

Dave
fuente
2

Tuve el mismo problema con un montón de archivos de ensamblaje después de mover el proyecto a otra solución.

Para mí, el web.configarchivo intentaba agregar este ensamblado:

<add assembly="System.Web.Helpers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/>

Pensé que la referencia en el proyecto apuntaba hacia la versión 3.0.0.0(haga clic en la referencia y desplácese hasta la parte inferior de las propiedades). Por lo tanto, acabo de cambiar la versión de referencia en el web.configarchivo.

No sé si esto fue solo un error de algún tipo. El problema con la adición de todas las otras referencias fue que las referencias aparecieron en el archivo de configuración pero en realidad no se hizo referencia en absoluto en el proyecto (dentro del explorador de soluciones) y los archivos necesarios no se copiaron con el resto de los archivos del proyecto, probablemente por no ser"copy local = true"

Ahora, no pude encontrar estos conjuntos en los conjuntos añadibles (haciendo clic con el botón derecho en la referencia e intentando agregarlos desde los conjuntos o extensiones). En su lugar, creé una nueva solución MVC que agregó todos los ensamblajes y referencias que necesitaba, y los encontré en las referencias de nuevos proyectos en el explorador de soluciones y encontré su ruta en la ventana de propiedades para la referencia.

Luego simplemente copié las bibliotecas que necesitaba en el otro proyecto y las hice referencia.

Mikael Puusaari
fuente
1

Después de intentarlo todo y aún fallar, esta fue mi solución: recordé que tuve un error al actualizar la versión MVC en mi Visual Studio, así que ejecuté el proyecto desde otro Visual Studio (computadora diferente) y luego cargué los dll-s y funcionó. tal vez ayude a alguien ...

Matan L
fuente
0

Estoy usando Jenkins con proyectos .net y tuve problemas con las referencias de MVC 4.

Finalmente resolví mi problema usando una funcionalidad de motor de búsqueda de referencia .Net basada en el registro usando:

"HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \ Microsoft.NETFramework \ v2.0.50727 \ AssemblyFoldersEx"

Puede crear una subclave y configurar la clave predeterminada en "c: \ myreferenceedir", por ejemplo.

Me salvó con versiones MVC y también páginas web ASP.net.

Útil para agregar referencias al "cuadro de diálogo Agregar referencia"

http://dhakshinamoorthy.wordpress.com/2011/12/04/how-to-register-your-net-assembly-in-gac-and-make-it-show-in-add-reference-dialog/

Jenzo
fuente
0

Como otros han mencionado, agregue estas referencias a estudios visuales con Copy Localset to true. (También tuve que agregar System.Web.Webpages)

Microsoft.Web.Infrastructure
System.Web.Razor
System.Web.WebPages.Deployment
System.Web.WebPages.Razor
System.Web.Webpages
roo2
fuente
0

Agregué "Microsoft ASP.NET Razor" usando Manage NuGet Packages.

Con Agregar referencias, por alguna razón, solo tenía System.Web.Helpers 1.0.0 y 2.0.0 ... pero no 3.0.0.

Otra opción, que me funcionó fue eliminar las referencias a System.Web.Mvc y System.Web.Http ... luego volver a agregarlas navegando a las ubicaciones del paquete en el archivo csproj (puede editar el proyecto más fácilmente con un editor de texto):

<Reference Include="System.Web.Http">
  <HintPath>..\packages\Microsoft.AspNet.WebApi.Core.5.2.3\lib\net45\System.Web.Http.dll</HintPath>

<Reference Include="System.Web.Mvc, Version=5.2.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
  <HintPath>..\packages\Microsoft.AspNet.Mvc.5.2.3\lib\net45\System.Web.Mvc.dll</HintPath>
Brian Rice
fuente