Microsoft.Web.Infrastructure,版本=1.0.0.0 无法在 Windows 2012 64 位、MVC5 上加载

Posted

技术标签:

【中文标题】Microsoft.Web.Infrastructure,版本=1.0.0.0 无法在 Windows 2012 64 位、MVC5 上加载【英文标题】:Microsoft.Web.Infrastructure, Version=1.0.0.0 Fail to load on Windows 2012 64bit, MVC5 【发布时间】:2014-09-08 01:26:18 【问题描述】:

我正在尝试在安装了 Plesk 的 Windows 2012 64 位操作系统上上传一个简单的网站。我使用带有 Visual Studio 2013 的 FTP 发布来使用 .NET 4.5 在虚拟目录中上传站点。但是我得到了

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.

基于 *** 或 Search 中的大量线程,建议大家上传 bin 文件夹中的文件。我做到了,我试了三次

    任何 CPU 构建 64 位构建 x86Build

但我得到的只是错误。我正在使用本地主机提供商的共享主机,因此无法运行aspnet_regiis -i 来确保.net 4.5 配置正确与否,并且技术正在争论证明/显示.net4.5 是否未安装或正常工作。

知道什么以及如何让它运行吗?

编辑:我的 bin 文件夹有这些文件:

System.Web.Webpages.Razor.dll
System.Web.Webpages.dll
System.Web.Webpages.Deployment.dll
System.Web.Razor.dll
System.Web.Mvc.dll
System.Web.Helpers.dll
System.Web.Extensions.dll
System.Web.Entity.dll
System.Web.DynamicData.dll
System.Web.dll
System.Web.ApplicationServices.dll
System.EnterpriseServices.dll
Microsoft.Web.Infrastructure.dll

项目的dll除外

编辑2:

来自错误的堆栈跟踪:

[FileNotFoundException: 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.]
   System.Web.WebPages.PreApplicationStartCode.Start() +0
   System.Web.Mvc.PreApplicationStartCode.Start() +32

[InvalidOperationException: The pre-application start initialization method Start on type System.Web.Mvc.PreApplicationStartCode 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..]
   System.Web.Compilation.BuildManager.InvokePreStartInitMethodsCore(ICollection`1 methods, Func`1 setHostingEnvironmentCultures) +556
   System.Web.Compilation.BuildManager.InvokePreStartInitMethods(ICollection`1 methods) +132
   System.Web.Compilation.BuildManager.CallPreStartInitMethods(String preStartInitListPath, Boolean& isRefAssemblyLoaded) +102
   System.Web.Compilation.BuildManager.ExecutePreAppStart() +153
   System.Web.Hosting.HostingEnvironment.Initialize(ApplicationManager appManager, IApplicationHost appHost, IConfigMapPathFactory configMapPathFactory, HostingEnvironmentParameters hostingParameters, PolicyLevel policyLevel, Exception appDomainCreationException) +516

[HttpException (0x80004005): The pre-application start initialization method Start on type System.Web.Mvc.PreApplicationStartCode 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..]
   System.Web.HttpRuntime.FirstRequestInit(HttpContext context) +9885060
   System.Web.HttpRuntime.EnsureFirstRequestInit(HttpContext context) +101
   System.Web.HttpRuntime.ProcessRequestNotificationPrivate(IIS7WorkerRequest wr, HttpContext context) +254

【问题讨论】:

这看起来与***.com/questions/12669206/… 相似,您是否尝试按照答案建议安装该软件包。您也可以下载 dll 并使用 gacutil.exe 将其手动安装到 GAC 中 @GearTrooper 是的,我已经提到我将这些文件复制到我的 BIN 文件夹中,并且对于 Razor 和 MVC,它们仍然与所有其他文件一起存在。 您真的应该检查一下,系统上是否安装了 .NET 4.5。如果没有这个假设,你就不能真正说出问题出在哪里。你能提供异常的堆栈跟踪吗? @VMAtm .NET 4.5 已按照技术支持的说明进行安装。我不确定它们是如何安装的,即。从服务器管理器或单独的设置。添加堆栈跟踪。 您能检查一下,.NET 4.5 是否用于您的应用程序池中的应用程序池?您的应用程序可能位于默认应用程序池中,仍然可以配置为使用较低版本的 .NET 【参考方案1】:

文件在那里,环境听起来已经准备好了。

如果应用程序池已配置为 Net4.5 集成,您应该一切顺利。

您的配置似乎有问题。

我建议您将应用程序安装在本地 IIS 服务器上,并查看是否出现相同的错误。

我遇到过类似的问题,因为之前应用程序已从一个 MVC 版本升级到另一个版本,这在项目文件和配置中留下了多个版本引用的痕迹。

应用在开发服务器上运行良好,但在生产服务器上却不行。

安装在本地 IIS 服务器(最好与您的托管服务提供商的版本相同)通常可以更轻松地解决问题。如果你让它在你的本地 IIS 上运行,你就准备好研究如何在远程服务器上做同样的事情。我希望您拥有远程 IIS 访问权限,这样可以更轻松地验证差异。

【讨论】:

以上是关于Microsoft.Web.Infrastructure,版本=1.0.0.0 无法在 Windows 2012 64 位、MVC5 上加载的主要内容,如果未能解决你的问题,请参考以下文章