У меня есть небольшое веб-приложение. Что работало нормально, пока я не добавил два genericHandler в свое приложение.
Я внес следующие изменения в обработчик 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.
Я использую asp.net4.0 и C #. Я не использую MVC.
На локальном хосте он работает нормально.
Но когда я размещаю опубликованный код, он дает мне указанную выше ошибку.
Трассировки стека:-
[FileNotFoundException: не удалось загрузить файл или сборку Microsoft.Web.Infrastructure, Version = 1.0.0.0, Culture = нейтральный, PublicKeyToken = 31bf3856ad364e35 или одну из их зависимостей. Системе не удается найти указанный файл.] System.Web.Http.WebHost.SuppressFormsAuthRedirectModule.Register () +0
[InvalidOperationException: метод инициализации перед запуском приложения Start с типом System.Web.Http.WebHost.PreApplicationStartCode вызвал исключение со следующим сообщением об ошибке: Не удалось загрузить файл или сборку Microsoft.Web.Infrastructure, Version = 1.0.0.0, Культура = нейтральный, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. Система не может найти указанный файл ..] System.Web.Compilation.BuildManager.InvokePreStartInitMethods (методы ICollection`1) +11708830 System.Web.Compilation.BuildManager.CallPreStartInitMethods () +465 System.Web.Hosting.InHostitialize (. ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLeve
[HttpException (0x80004005): метод инициализации перед запуском приложения Start для типа System.Web.Http.WebHost.PreApplicationStartCode вызвал исключение со следующим сообщением об ошибке: Не удалось загрузить файл или сборку Microsoft.Web.Infrastructure, Version = 1.0 .0.0, Культура = нейтральный, PublicKeyToken = 31bf3856ad364e35 'или одна из его зависимостей. Системе не удается найти указанный файл. +4866485
Ответы:
Похоже, что Microsoft.Web.Infrastructure.dll не устанавливается в GAC, даже если .net (4.0 или 4.5 или другой) успешно установлены на Windows Server. На локальном хосте (обычно клиент Windows) кажется, что он находится в GAC, когда установлены инструменты / платформа (Visual Studio и т. Д.).
В качестве одного из возможных исправлений попробуйте следующее:
Выполните следующую команду в консоли диспетчера пакетов. (Если вы используете Visual Studio, это может быть достигнуто через пункты меню «Инструменты -> Диспетчер пакетов библиотеки -> Консоль диспетчера пакетов :)
PM> Install-Package Microsoft.Web.Infrastructure
Вы увидите следующие сообщения, если он будет успешно установлен.
Successfully installed 'Microsoft.Web.Infrastructure 1.0.0.0'. Successfully added 'Microsoft.Web.Infrastructure 1.0.0.0' to Web.
Вы заметите, что Microsoft.Web.Infrastructure.dll теперь добавлен как ссылка (можно увидеть в папке ссылок вашего проекта в обозревателе решений)
Если вы посмотрите на свойства этого справочника, то заметите, что для параметра « Копировать локально » по умолчанию установлено значение « Истина ».
Теперь, когда вы «публикуете» свой проект, будет развернут Microsoft.Web.Infrastructure.dll .
источник
Я установил MVC4 через WPI, и это мне помогло.
источник
У меня такая же проблема. Когда я попробовал принятый ответ (rockyb), я получил сообщение о том, что пакет уже установлен и назначен моему проекту. Однако, когда я проверил список ссылок, на него НЕ ссылались.
Microsoft.Web.Infrastructure была установлена в папке пакетов моего решения. Вместо использования NuGet для добавления пакета я просто использовал опцию «Добавить ссылку». В левой части всплывающего окна я выбрал «Обзор», а затем нажал кнопку «Обзор» в нижней части окна. Я перешел в папку пакетов в папке, в которой находилось мое решение, затем развернулся до ... \ mysolution \ packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40 и щелкнул Microsoft.Web.Infrastructure .dll. После нажатия кнопки ОК пакет появился в моем списке ссылок. Я использовал опцию Web Deploy Package для развертывания моего сайта, и все заработало.
источник
Почему бы не скопировать файл Microsoft.Web.Infrastructure.dll вручную в папку BIN сервера. Это работает для. Мой проект - VS2010 Website.
Этот файл может быть расположен:
C: \ Program Files (x86) \ Microsoft ASP.NET \ ASP.NET MVC 4 \ Packages \ Microsoft.Web.Infrastructure.1.0.0.0 \ lib \ net40
Просто скопируйте и вставьте его в папку BIN.
Вероятно, вам нужно включить это в web.config, если у вас его еще нет
<compilation debug="true" targetFramework="4.0"> <assemblies> <add assembly="Microsoft.Web.Infrastructure, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31BF3856AD364E35"/> </assemblies> </compilation>
Ссылка: http://thedeveloperblog.com/
источник
Я нашел проблему. Вместо того, чтобы
(.cs)
по ошибке добавить файл класса , я добавилWeb API Controller
класс, который добавил файл конфигурации в мое решение. И этот файл конфигурации искал упомянутую DLL (Microsoft.Web.Infrastructure 1.0.0.0). Это сработало, когда я удалил этот файл, очистил приложение и затем опубликовал.источник
После установки Microsoft.Web.Infrastructure через
Nuget-Package Manager
PM> Install-Package Microsoft.Web.Infrastructure
Скопируйте файл
Microsoft.Web.Infrastructure.dll
вручную изNuget-Package
папки веб-приложения, а затем вставьте его в папку bin вашего веб-приложения, развернутого на веб-сервере.У меня это сработало.
источник
Update-Package -reinstall Microsoft.Web.Infrastructure
у меня не работало, так как я продолжал получать ошибки, что он уже установлен.Мне пришлось перейти в папку Microsoft.Web.Infrastructure.1.0.0.0 в папке пакетов и вручную удалить эту папку.
После этого запустив
Install-Package Microsoft.Web.Infrastructure
его.Примечание:
CopyLocal
было автоматически установлено значение true.источник
У меня была та же проблема, и «Microsoft.Web.Infrastructure.dll», похоже, отсутствовал. Я попробовал несколько советов и установил MVC и т.д., и ничего не помогло. Решением было установить «Улучшения веб-служб (WSE) 1.0 SP1 для Microsoft .NET», который включает Microsoft.Web.Infrastructure.dll. Доступно по адресу: http://www.microsoft.com/en-gb/download/details.aspx?id=4065.
источник
У меня такая же проблема. Я попытался установить Visual Studio 2010 SP1, но это не сработало.
В итоге я получаю от коллеги Microsoft.Web.Infrastructure.dll. Вы можете найти dll на своем компьютере друзей, на котором проект отлично работает. Попробуйте поискать dll в Temp / Temporary ASP.NET Files. Перейдите к Temp, используя% temp% в окне выполнения.
После загрузки dll на компьютер просто добавьте ссылку на свой проект, и он заработает.
источник
Повторная публикация сайта устранила проблему для меня.
источник
Столкнулся с той же проблемой, и, к сожалению, здесь ничего не работало. Наконец, я наткнулся на эту ссылку: https://blogs.msdn.microsoft.com/jjameson/2009/11/18/the-copy-local-bug-in-visual-studio/
Оказывается, решение довольно глупое: установите для copy-local для dll microsoft.web.infrastructure значение False, затем снова установите значение True.
Кстати, я думаю, что происходит две версии dll microsoft.web.infrastructure, одна из которых предварительно установлена в GAC, а другая - теперь пакет nuget. Я думаю, что одно маскирует другое, что вызывает проблемы. В моем конкретном случае на моем сервере сборки мне нужно скопировать его в папку (затем эта папка архивируется и отправляется для развертывания). Я думаю, у системы была локальная копия, и я просто подумал: «Нет, все будет хорошо»
источник
У меня есть веб-сайт только для файлов. Добавлен MVC 5 в приложение веб-форм (таргетинг на net45). Мне пришлось изменить файл packages.config
package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45"
к
package id="Microsoft.AspNet.Mvc" version="5.2.3" targetFramework="net45" developmentDependency="true"
чтобы он запускался на локальном компьютере в режиме отладки (ранее была описанная выше ошибка). Запуск VS 2017 в Windows 7 ... открытие через Файл> Открыть> Веб-сайт> Файл (выберите корневой каталог вне IIS).
источник
У меня была такая же проблема после обновления кучи пакетов NuGet.
Я пробовал все виды удаления, очистки и повторной установки, описанные здесь, но безрезультатно. В ссылках не было Microsoft.Web.Infrastructure, хотя диспетчер NuGet показал, что он был установлен.
Проблема решилась заменой:
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net45" />
с участием
<package id="Microsoft.Web.Infrastructure" version="1.0.0.0" targetFramework="net46" />
в packages.config. По всей видимости, виноват "net45".
источник