Tengo una pequeña aplicación web. Lo cual funcionaba bien hasta que agregué dos genericHandler en mi aplicación.
Hice los siguientes cambios para el controlador http
<system.web>
<authentication mode="Forms" >
<forms protection="All" timeout="720" defaultUrl="Default.aspx" loginUrl="Login.aspx" >
</forms>
</authentication>
<authorization>
<deny users="?"/>
</authorization>
<compilation debug="true" targetFramework="4.0" />
<httpHandlers>
<!--Code Log Handler-->
<add verb="*" path="*.aspx" type="System.Web.UI.PageHandlerFactory" />
<add verb="*" type="InfoDomeNewUI.Handler.SendOWA" path="SendOWA.ashx" />
<add verb="*" type="InfoDomeNewUI.Handler.SendSOS" path="SendSOS.ashx" />
</httpHandlers>
<customErrors mode="Off">
<error statusCode="404" redirect="Templates/PageNotFound.html" />
</customErrors>
</system.web>
<system.webServer>
<validation validateIntegratedModeConfiguration="false" />
<handlers>
<!--Code Log Handler-->
<add name="LogHandler1" path="SendOWA.ashx" verb="*" type="InfoDomeNewUI.Handler.SendOWA"/>
<!-- SMS SENDER-->
<add name="SendSOS" path="SendSOS.ashx" verb="*" type="InfoDomeNewUI.Handler.SendSOS"/>
</handlers>
</system.webServer>
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.
Estoy usando asp.net4.0 y C #. No estoy usando MVC
en el host local, está funcionando bien.
Pero cuando alojo el código publicado me está dando el error anterior.
Seguimiento de pila: -
[FileNotFoundException: no se pudo cargar el archivo o ensamblado 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35' o una de sus dependencias. El sistema no puede encontrar el archivo especificado.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0
[InvalidOperationException: el método de inicialización de inicio previo a la aplicación Start en el tipo System.Web.Http.WebHost.PreApplicationStartCode arrojó una excepción con el siguiente mensaje de error: No se pudo cargar el archivo o ensamblado 'Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'o una de sus dependencias. El sistema no puede encontrar el archivo especificado.] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (métodos ICollection`1) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.HostingEnvironment ( ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve
[HttpException (0x80004005): el método de inicialización de inicio previo a la aplicación Iniciar en el tipo System.Web.Http.WebHost.PreApplicationStartCode arrojó una excepción con el siguiente mensaje de error: No se pudo cargar el archivo o ensamblado 'Microsoft.Web.Infrastructure, Versión = 1.0 .0.0, Culture = neutral, PublicKeyToken = 31bf3856ad364e35 'o una de sus dependencias. El sistema no puede encontrar el archivo especificado ..] System.Web.HttpRuntime.FirstRequestInit (contexto HttpContext) +11697760 System.Web.HttpRuntime.EnsureFirstRequestInit (contexto HttpContext) +141 System.Web.HttpRuntime.ProcessWRequestNotification7) +4866485
Respuestas:
Parece que Microsoft.Web.Infrastructure.dll no se está instalando en el GAC, incluso si .net (4.0 o 4.5 u otro) se instaló correctamente en Windows Server. En localhost (normalmente cliente de Windows), parece que está en el GAC cuando se instalan las herramientas / plataforma (Visual Studio, etc.).
Como una posible solución, intente lo siguiente:
Ejecute el siguiente comando en la Consola del Administrador de paquetes. (Si está utilizando Visual Studio, puede acceder a esto a través de las opciones de menú "Herramientas -> Administrador de paquetes de biblioteca -> Consola del administrador de paquetes :)
Verá los siguientes mensajes si se instaló correctamente.
Notará que Microsoft.Web.Infrastructure.dll ahora se ha agregado como referencia (se puede ver en la carpeta de referencias de su proyecto en el Explorador de soluciones)
Si observa las propiedades de esta referencia, notará que " Copiar local " se ha establecido en " Verdadero " de forma predeterminada.
Ahora, cuando "publique" su proyecto, se implementará Microsoft.Web.Infrastructure.dll .
fuente
Instalé MVC4 a través de WPI y me ayudó.
fuente
Yo tuve el mismo problema. Cuando probé la respuesta aceptada (rockyb), recibí el mensaje de que el paquete ya estaba instalado y asignado a mi proyecto. Sin embargo, cuando verifiqué la lista de referencias, NO se hizo referencia a ella.
Microsoft.Web.Infrastructure se instaló en la carpeta de paquetes de mi solución. En lugar de usar NuGet para agregar el paquete, solo usé la opción Agregar referencia. En el lado izquierdo de la ventana emergente, elegí Examinar y luego presioné el botón Examinar en la parte inferior de la ventana. Navegué hasta la carpeta de paquetes debajo de la carpeta en la que estaba mi solución, luego profundicé en ... \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 y hice clic en Microsoft.Web.Infrastructure .dll. Después de hacer clic en Aceptar, el paquete apareció en mi lista de referencias. Usé la opción Web Deploy Package para implementar mi sitio web y todo funcionó.
fuente
¿Por qué no copiar el archivo Microsoft.Web.Infrastructure.dll manualmente en la carpeta BIN del servidor? Esto funciona para. Mi proyecto es el sitio web VS2010.
Este archivo se puede ubicar:
C: \ Archivos de programa (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40
Simplemente cópielo y péguelo en la carpeta BIN.
Probablemente necesite incluir esto en web.config si aún no lo tiene
Referencia: http://thedeveloperblog.com/
fuente
Encontré el problema. En lugar de agregar un
(.cs)
archivo de clase por error, agregué unaWeb API Controller
clase que agregó un archivo de configuración en mi solución. Y ese archivo de configuración buscaba la DLL mencionada (Microsoft.Web.Infrastructure 1.0.0.0). Funcionó cuando eliminé ese archivo, limpié la aplicación y luego publiqué.fuente
Después de instalar Microsoft.Web.Infrastructure a través de
Nuget-Package Manager
Copie el archivo
Microsoft.Web.Infrastructure.dll
manualmente desde laNuget-Package
carpeta de su aplicación web y luego péguelo en la carpeta bin de su aplicación web implementada en el servidor web.Funcionó para mí.
fuente
Update-Package -reinstall Microsoft.Web.Infrastructure
no funcionó para mí, ya que seguía recibiendo errores de que ya estaba instalado.Tuve que navegar a Microsoft.Web.Infrastructure.1.0.0.0 carpeta en la carpeta de paquetes y eliminar manualmente esa carpeta.
Después de hacer esto, ejecutarlo lo
Install-Package Microsoft.Web.Infrastructure
instaló.Nota:
CopyLocal
se estableció automáticamente en verdadero.fuente
Tuve el mismo problema y parecía que faltaba "Microsoft.Web.Infrastructure.dll". Probé algunos consejos e instalé MVC, etc. y nada ayudó. La solución fue instalar "Web Services Enhancements (WSE) 1.0 SP1 para Microsoft .NET" que incluye Microsoft.Web.Infrastructure.dll. Disponible en: http://www.microsoft.com/en-gb/download/details.aspx?id=4065
fuente
Yo tuve el mismo problema. Intenté instalar Visual Studio 2010 SP1 pero no funcionó.
Finalmente obtengo Microsoft.Web.Infrastructure.dll del colega. Puede encontrar el dll en la PC de sus amigos donde el proyecto está funcionando perfectamente. Intente buscar dll en archivos ASP.NET temporales / temporales. Vaya a Temp usando% temp% en la ventana de ejecución.
Después de instalar dll en su PC, simplemente agregue una referencia a su proyecto y funcionará.
fuente
Volver a publicar el sitio solucionó el problema.
fuente
Estaba enfrentando el mismo problema y, desafortunadamente, nada aquí funcionaba. Finalmente, encontré este enlace: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/
Resulta que la solución es algo tonta: configure copy-local para microsoft.web.infrastructure dll en False, luego configúrelo de nuevo en True.
Por cierto, creo que lo que está sucediendo es que hay dos versiones de la dll microsoft.web.infrastructure, una que está preinstalada en el GAC y otra que ahora es un paquete nuget. Creo que uno enmascara al otro, por lo que causa problemas. En mi caso particular, en mi servidor de compilación, necesito que se copie en una carpeta (esta carpeta se comprime y se envía a la implementación). Supongo que el sistema tenía una copia local y solo pensó "no, estará bien"
fuente
Tengo un sitio web solo de archivos. Se agregó MVC 5 a la aplicación de formularios web (dirigido a net45). Tuve que modificar el packages.config
a
para que se inicie en el cuadro local en modo de depuración (anteriormente tenía el error descrito arriba). Ejecutando VS 2017 en Windows 7 ... abierto a través de Archivo> Abrir> Sitio web> Archivo (elija el directorio raíz fuera de IIS).
fuente
Tuve el mismo problema después de actualizar varios paquetes NuGet.
He intentado todo tipo de eliminación, limpieza, restauración descrita aquí y más en vano. Las referencias no tenían Microsoft.Web.Infrastructure a pesar de que el administrador de NuGet mostró que estaba instalado.
El problema se resolvió reemplazando:
con
en packages.config. El culpable es aparentemente "net45".
fuente