Intenté subir mi sitio web a un servidor. Funcionaba bien con mi host local, así que cargué todo en mi wwwroot
carpeta localhost al servidor y cambié la cadena de conexión.
Pero existe este error:
Exception information:
Exception type: InvalidOperationException
Exception message: The pre-application start initialization method Start on type RouteDebug.PreApplicationStart threw an exception with the following error message: Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified..
at System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods)
at System.Web.Compilation.BuildManager.CallPreStartInitMethods()
at System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException)
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
at RouteDebug.PreApplicationStart.Start()
El proyecto fue nopcommerce
.
¿Qué se debe hacer para resolver este error?
c#
asp.net-mvc
usuario1348351
fuente
fuente
Respuestas:
Deberá incluir el dll con su proyecto y agregarle una referencia también.
Aquí hay un enlace a un problema similar que ya está en Stack: Problemas de dependencia de implementación de MVC3
fuente
Resulta que después de hacer una limpieza de referencia, se eliminó
Microsoft.Web.Infrastructure
, pero no del archivo packages.config. Después de intentar agregarlo nuevamente usando elPackage Manager Console
, Visual Studio dice que ya está instalado, lo cual es falso porque se eliminó.Luego eliminé la línea de código en el
packages.config
archivo<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
y ejecuté el comando de nuevo
Después de esto, ahora funciona bien.
fuente
Instalar AspNetMVC3ToolsUpdateSetup descargado desde aquí resolvería este problema sin agregar referencia
fuente
A pesar de la cantidad de respuestas, agregaré otra que, en mi humilde opinión, aclara un poco las cosas.
Como Rob y wrightmail ya han mencionado,
Microsoft.Web.Infrastructure
es un paquete NuGet (el enlace no es necesario, lo tiene en el Administrador de paquetes NuGet).Aparentemente, su proyecto hizo referencia a él y de repente desapareció. Puede existir una serie de razones, pero lo importante es que, a pesar de que puede haber habilitado la Restauración automática de paquetes en Visual Studio :
ciertos paquetes pueden requerir una reinstalación manual. No sé qué confunde a NuGet, tal vez eliminar manualmente una referencia, pero aquí está la solución que suelo aplicar en tales casos. La siguiente consola de PM ayuda a restaurar un paquete mientras conserva la versión original (sin actualizar a una nueva posiblemente existente):
Es posible que se requiera la conservación de la versión si no desea sobrescribir accidentalmente un paquete existente con su versión más reciente, lo que posiblemente elimine la funcionalidad "antigua" que haya utilizado en su proyecto.
Y, como prueba, a pesar de ser un poco larga, de que la versión no cambia, aquí está el resultado cuando se ejecuta el comando:
PM> Update-Package Microsoft.Web.Infrastructure -Reinstall Attempting to gather dependencies information for multiple packages with respect to project 'Samples.NuGet\DemoApp\DemoApp', targeting '.NETFramework,Version=v4.5.2' Attempting to resolve dependencies for multiple packages Resolving actions install multiple packages ... Package removal starts here... ... Removed package 'Microsoft.AspNet.Web.Optimization 1.1.3' from 'packages.config' Successfully uninstalled 'Microsoft.AspNet.Web.Optimization 1.1.3' from DemoApp Removed package 'WebGrease 1.5.2' from 'packages.config' Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\uninstall.ps1' Successfully uninstalled 'WebGrease 1.5.2' from DemoApp ... More package removals here. Omitted for brevity... ... Removed package 'Microsoft.Web.Infrastructure 1.0.0.0' from 'packages.config' Successfully uninstalled 'Microsoft.Web.Infrastructure 1.0.0.0' from DemoApp ... More package removals here. Omitted for brevity... ... Removed package 'Antlr 3.4.1.9004' from 'packages.config' Successfully uninstalled 'Antlr 3.4.1.9004' from MvcLenseApp Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\Lense.Mvc5\packages' --- Install packages (in reverse order) --- Package 'Antlr.3.4.1.9004' already exists in folder 'D:\Projects\DemoApp\packages' Added package 'Antlr.3.4.1.9004' to 'packages.config' Successfully installed 'Antlr 3.4.1.9004' to DemoApp ... More package installs here. Omitted for brevity... ... Package 'Microsoft.Web.Infrastructure.1.0.0' already exists in folder 'D:\Projects\Lense.Mvc5\packages' Added package 'Microsoft.Web.Infrastructure.1.0.0' to 'packages.config' Successfully installed 'Microsoft.Web.Infrastructure 1.0.0' to MvcLenseApp ... More package installs here. Omitted for brevity... ... Package 'WebGrease.1.5.2' already exists in folder 'D:\Projects\DemoApp\packages' Added package 'WebGrease.1.5.2' to 'packages.config' Executing script file 'D:\Projects\DemoApp\packages\WebGrease.1.5.2\tools\install.ps1' Successfully installed 'WebGrease 1.5.2' to DemoApp Package 'Microsoft.AspNet.Web.Optimization.1.1.3' already exists in folder 'D:\Projects\DemoApp\packages' Added package 'Microsoft.AspNet.Web.Optimization.1.1.3' to 'packages.config' ... End of package re-install. ... Successfully installed 'Microsoft.AspNet.Web.Optimization 1.1.3' to DemoApp PM>
Por supuesto, si desea reinstalar todos los paquetes, es posible que deba familiarizarse con los comandos de actualización / instalación en NuGet aquí y aquí .
fuente
Descubrí que aunque funcionaba en mi caja de desarrollo, el ensamblaje no se agregó al proyecto. Busque Microsoft.Web.Infrastructure en NuGet e instálelo desde allí. Luego, asegúrese de que haya seleccionado Copiar local.
fuente
Experimenté este problema en una nueva máquina con Windows 10 en VS2015 con un proyecto existente. Administrador de paquetes 3.4.4. Restaurar paquetes habilitados.
La restauración no parece funcionar completamente. Tuve que ejecutar lo siguiente en la línea de comandos del Administrador de paquetes
Update-Package -ProjectName "YourProjectName" -Id Microsoft.Web.Infrastructure -Reinstall
Esto hizo los siguientes cambios en mi archivo de solución que la restauración NO hizo.
Simplemente agregando los elementos anteriores a la sección ItemGroup en su archivo de solución TAMBIÉN resolverá el problema siempre que exista .. \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 \ Microsoft.Web.Infrastructure.dll.
Es más fácil simplemente hacer la -Reinstalación, pero es bueno comprender qué hace de manera diferente a la restauración del paquete.
fuente
Resharper detectó Microsoft.Web.Infrastructure como una referencia no utilizada y lo eliminé. Localmente funcionaba bien, pero luego recibí el mismo error después de publicarlo en dev.
Conclusión, tenga cuidado al eliminar referencias marcadas como no utilizadas por Resharper
fuente
Intente instalar Web Platform desde https://www.microsoft.com/web/platform/
Espero eso ayude.
fuente
Tuve un problema similar. NuGet mostró que el paquete se instaló correctamente, pero la referencia no se agregó a mi proyecto.
La ejecución
<PM> Install-Package Microsoft.Web.InfraStructure
tampoco ayudó, ya que el administrador de paquetes seguía diciendo que ya estaba instaladoFinalmente lo agregué manualmente editando el archivo csproj y agregando estas líneas:
<Reference Include="Microsoft.Web.Infrastructure"> <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> <Private>True</Private> </Reference>
Eso resolvió el problema.
fuente
Debe descargar el marco ASP.NET MVC en el servidor que aloja su aplicación. Es una solución rápida, simplemente descárguela e instálela desde aquí (este es el marco MVC 3 http://www.asp.net/mvc/mvc3 ), entonces boom, ya está listo.
fuente
Para mí
Microsoft.Web.Infrastructure.dll
, faltaba en la carpeta bin, no estaba configurado para copiar local en el proyecto. Copió el dll de otro proyecto en la solución y se carga la página.fuente
Primero elimine Microsoft.Web.Infrastructure de package.config.
y ejecuté el comando de nuevo
PM> Install-Package Microsoft.Web.Infrastructure y asegúrese de que la propiedad Copiar local sea verdadera.
fuente
Solución muy sencilla:
En Visual Studio, vaya a Herramientas / Administrador de paquetes de biblioteca / Consola del administrador de paquetes
Pasar un buen rato
fuente
Aquí estaba mi escenario.
Tenía una solución multiproyecto que contenía los proyectos A, B, C .. N.
El Proyecto B era una biblioteca de códigos que contenía una fábrica de
selectlist
objetos.El proyecto se ejecutaría como se esperaba en desarrollo, pero al publicar en nuestro entorno de prueba recibí el error que estaba encontrando:
Could not load file or assembly 'Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The system cannot find the file specified.
Lo que sucedió fue a través del administrador de paquetes nuget, instalé accidentalmente "Microsoft ASP.NET MVC" que instaló dependencias para:
Bajo y he aquí, Microsoft.AspNet.WebPages depende de "Microsoft.Web.Infrastructure".
Mi solución fue desinstalar los tres paquetes mencionados anteriormente (MVC, Razor, WebPages) y luego hacer clic con el botón derecho en referencias> agregar referencia> Ensamblados> Extensiones> System.Web.MVC.
fuente
Tuve que establecer "Copiar local" en las Propiedades de referencia en Falso, luego volver a Verdadero. Al hacer esto, se agregó la configuración Privada verdadera al archivo .csproj.
<Reference Include="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"> <HintPath>..\packages\Microsoft.Web.Infrastructure.1.0.0.0\lib\net40\Microsoft.Web.Infrastructure.dll</HintPath> <Private>True</Private> </Reference>
Supuse que esto ya estaba configurado, ya que "Copiar local" se mostró como Verdadero.
fuente
No sé qué pasó con mi proyecto, pero hacía referencia a la ruta incorrecta a la DLL. Nuget lo instaló correctamente y, de hecho, estaba en mi sistema de archivos junto con los otros paquetes, pero solo se referenciaba incorrectamente.
La
packages
carpeta existe dos directorios desde mi proyecto y solo subía uno al comenzar la ruta con..\packages\
. Cambié la ruta para empezar..\..\packages\
y solucionó mi problema.fuente
En mi máquina, la dependencia de Nuget no se descargó correctamente, la carpeta lib dentro del paquete nuget no existía, de ahí el error.
antes de
Cambié el nombre del paquete Nuget en la carpeta de paquetes y Nuget lo volvió a descargar correctamente con la carpeta lib necesaria.
Después
fuente
En algunos casos el proyecto de limpieza / solución, la eliminación física
bin/
y laobj/
y la reconstrucción podría resolver este tipo de errores. Esto podría suceder cuando, por ejemplo, algunos paquetes y referencias se instalan / agregan y luego se eliminan, dejando algunos artefactos atrás.Me pasó con
Microsoft.Web.Infrastructure
: inicialmente, el proyecto no requería ese montaje. Después de algunos experimentos, cuyo efecto neto se suponía que era cero al final, obtuve esta excepción. Los pasos anteriores lo resolvieron sin la necesidad de instalar la dependencia no utilizada.fuente
Tuve este problema. Tenía la DLL incluida en el proyecto y la configuración de Copiar local era verdadera de forma predeterminada. No sé por qué comenzó, ya que esa DLL estuvo en el proyecto durante mucho tiempo. Escuché algunas menciones de que ReSharper posiblemente lo eliminó, pero no puedo decir que haya ejecutado una eliminación de referencia no utilizada.
Lo que me ayudó fue: - Ejecutar "Update-Package Microsoft.Web.Infrastructure -Reinstall" en el proyecto, que actualizó toda la solución, pero no terminó ayudando en sí mismo. - Luego revisé las referencias de los proyectos y configuré la copia local en falso, y luego volví a verdadero. En realidad, esto resultó en una línea que se agregó al archivo CSPROJ con la referencia de DLL: True. O algo parecido ... De cualquier manera, ahora la compilación estaba copiando los archivos como se esperaba.
fuente
Entonces, esto es lo que funcionó para mí usando VS2019. Recibí este error al intentar actualizar los paquetes de Nuget en un proyecto mientras Microsoft.Web.Infrastructure estaba en un proyecto diferente en la misma solución. Tuve que eliminar la carpeta Microsoft.Web.Infrastructure.1.0.0.0 de la carpeta Paquetes de mi proyecto. Lo reinstalé a través de nuget y luego todo comenzó a funcionar nuevamente. Cosas locas.
fuente