Не удалось загрузить файл или сборку 'System.Сеть.Mvc, Версия=3.0.0.0, Elmah.Проблема в MVC
локально-мой MVC 4, asp.net, приложение c# отлично работает на IIS 8 / Windows 8.
при развертывании в Windows Server 2008 я получаю эту ошибку:
Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
и
[FileLoadException: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)]
Elmah.Mvc.Bootstrap.Initialize() +0
[InvalidOperationException: The pre-application start initialization method Initialize on type Elmah.Mvc.Bootstrap threw an exception with the following error message: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040).]
System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +12881963
System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +12881672
System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath) +240
System.Web.Compilation.BuildManager.ExecutePreAppStart() +152
System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +1151
[HttpException (0x80004005): The pre-application start initialization method Initialize on type Elmah.Mvc.Bootstrap threw an exception with the following error message: Could not load file or assembly 'System.Web.Mvc, Version=3.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040).]
System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +12881108
System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +159
System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +12722297
это происходит, если я выбираю "только файлы, необходимые для запуска этого приложения" из раскрывающегося списка "элементы для развертывания" в свойствах проекта/пакет/опубликовать в интернете.
Если я выберу "все файлы в этом проекте", он работает нормально.
Я думаю, Elmah зависит от более старой версии MVC или что - то еще-как я могу это исправить, не загружая все файлы?
каков наилучший способ решения проблем в таких ситуациях?
спасибо.
5 ответов
у меня была такая же проблема с использованием MVC4 с Ninject, построенным для .Net 4.5
чтобы исправить это, мне пришлось добавить перенаправление привязки к моей сети.конфигурационный файл:
(в конце файла, перед </configuration>
tag)
<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="1.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>
<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>
</assemblyBinding>
</runtime>
Это заставляет веб-сервер, чтобы использовать System.Web.Mvc 4.0.0.0
вместо старой версии.
есть некоторые процедуры, используемые для устранения проблемы, и если перенаправление привязки в
web.config
не решит проблему, вы можете попробовать следующие шаги, чтобы исправить это:
1) в дереве обозревателя решений Visual Studio щелкните правой кнопкой мыши ссылки в веб-проекте и выберите Управление пакетами NuGet.
2) перейдите на вкладку Обзор и выберите nuget.org
как источник пакета.
3) поиск и установка следующие пакеты: Ninject
, Ninject.Web.Common
и Ninject.MVC5
.
также лучше обновить пакеты, особенно Microsoft ASP.NET MVC
на вкладке Обновления управления пакетами NuGet.
надеюсь, что это помогает...
вы уверены, что используете ASP.NET MVC (просмотры контроллеров и т. д.)? или ваше веб-приложение использует ASP.NET исключительно WebAPI? Если это так, то вы должны установить только пакет ElMAH NuGet и не Elmah.В MVC.
для ASP.NET WebAPI только приложения, которые я бы рекомендовал Emah.ВНО.Веб-API пакета. Этот пакет также может быть установлен через NuGet.
на странице ошибки у меня было это:
LOG: перенаправление, обнаруженное в файле конфигурации приложения: 5.1.0.0 было перенаправлено на 5.2.3.0.
Так что мне пришлось изменить эту строку в web.config в 5.1.0.0 версия, и это сработало!
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.1.0.0" />
<!--<bindingRedirect oldVersion="0.0.0.0-5.2.3.0" newVersion="5.2.3.0" /> Older line -->
</dependentAssembly>
Я думаю, что это связано с проблемой версии, когда я загрузил код из TFS
надеюсь, что это помогает
добавить ниже код в интернете.config:
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<assemblyIdentity name="System.Web.Mvc" publicKeyToken="31bf3856ad364e35" />
<bindingRedirect oldVersion="1.0.0.0-3.0.0.0" newVersion="3.0.0.1" />
</dependentAssembly>
</assemblyBinding>