- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我一直在尝试将新的 asp.net mvc 项目部署到 Azure 进行生产。一切都在本地运行,但我在部署时遇到了程序集问题。
导航到大多数页面后,我开始收到以下错误:
Unable to load one or more of the requested types. Retrieve the LoaderExceptions property for more information.
使用来自:https://stackoverflow.com/a/8824250/1411764的信息我发现了异常:
Could not load file or assembly 'Microsoft.Web.Administration,
Version=7.9.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35' or
one of its dependencies. The system cannot find the file specified.
Microsoft.Web.Administration
似乎是一个 IIS 程序集。
然后,我使用 Nuget 将 Microsoft.Web.Administration
添加到项目中.
现在我遇到了一个新错误:
Could not load file or assembly 'Microsoft.Web.Administration' or one of its dependencies. The located assembly's manifest definition does not match the assembly reference. (Exception from HRESULT: 0x80131040)
我尝试在 web.config 中添加绑定(bind)重定向
<dependentAssembly>
<assemblyIdentity name="Microsoft.Web.Administration" publicKeyToken="31BF3856AD364E35" culture="neutral" />
<bindingRedirect oldVersion="0.0.0.0-7.9.0.0" newVersion="7.9.0.0" />
此时它立即中断,我无法加载任何页面。 (看起来比我没有额外的 dll 时更糟糕。
我读过很多类似的帖子,但似乎无法弄清楚。希望我由于对 Azure 缺乏了解而犯了一些简单的错误。任何帮助将不胜感激。
更新信息
右键单击属性以供引用Microsoft.Web.Administration
:
复制本地:True
运行版本v2.0.50727
版本:7.0.0.0
调用程序集:Microsoft.WebMatrix.Core,Version=8.1.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35
更新 2 - 来自评论:
设置绑定(bind)到 7.0.0.0
后,它现在会在服务器上再次编译并可以显示一些页面,但我仍然捕获之前的错误。
Could not load file or assembly 'Microsoft.Web.Administration, Version=7.9.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)
我认为 Nuget 仅提供了 7.0.0.0
版本,但有些人认为它需要 7.9.0.0
。
更新 3:成功
我开始研究版本号差异,发现了这个 stack question这解释了 IIS 和 IISExpress 之间的一些差异。
目前,我将重定向从 7.9.0.0
更改为 7.0.0.0
,这似乎解决了问题。
<bindingRedirect oldVersion="0.0.0.0-7.9.0.0" newVersion="7.0.0.0" />
程序集现在可以工作并且页面正在加载。
虽然这个解决方案感觉非常hacky。绑定(bind)到较低版本是不好的做法还是可能在将来引起问题?我担心我应该解决调用不同 IIS 版本的代码。
最佳答案
这可能不是最佳解决方案,但它是评论中的建议、原始问题、我所做的研究和测试以及我对结果的解释的总结。我希望它会有用。感谢所有为解决此问题做出贡献的人。
TL;DR:在您的 BUILD 系统上安装 IIS 和 IIS 管理功能,或在安装了这些功能的系统上进行构建。
此错误意味着您的应用程序正在尝试加载 Microsoft.Web.Administration
的 IIS Express 版本,这可能不是您在生产服务器上想要的。
(另请参阅 https://stackoverflow.com/a/11216326/2279059 )
要使您的应用程序在具有真正 IIS 的生产系统上运行,您必须在安装了 Microsoft.Web.Administration
的 IIS(不仅是 IIS Express)版本的系统上构建它。安装,即您必须安装 IIS 并启用 IIS 管理功能(在不同的 Windows 版本/版本上其名称略有不同),因此 C:\Windows\system32\inetsrv\Microsoft.Web.Administration .DLL
存在。
在您的项目文件中,对 DLL 的引用应如下所示:
<Reference Include="Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">
<HintPath>C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll</HintPath>
<SpecificVersion>True</SpecificVersion>
</Reference>
(这适用于 Visual Studio 2012,对于较新的版本可能有所不同!)
请注意,如果您关闭 SpecificVersion
或将 Version
设置为 7.9.0.0,只要您在 IIS 和Microsoft.Web.Administration
已安装。但是,如果您在缺少 DLL 的系统上构建它,则您的应用程序可能会链接到 DLL 的 IIS Express 版本(随 Visual Studio 一起提供),从而导致问题中描述的问题。因此,您最好指定版本。如果构建系统上未安装 DLL,这将使构建失败,这比生成损坏的可执行文件的“成功”构建更容易调试。
网络上还有一个名为 Microsoft.Web.Administration
的 NuGet 包。根据较旧的信息 ( https://blog.lextudio.com/2015/05/whats-microsoft-web-administration-and-the-horrible-facts-you-should-know/ ),这不是 Microsoft 软件包,不应使用。然而,微软现在似乎已经获得了该软件包的所有权。虽然我在 Visual Studio 2012 中的 NuGet 上找不到它,但我在 Visual Studio 2015 中编写的应用程序使用此包,并且在多个版本的 Windows 上运行良好(例如 Windows Server 2012 和 Windows 10,它们具有不同版本的 IIS)。因此,使用 NuGet 包可能会解决所有这些问题。
关于asp.net-mvc - Azure 上的 Microsoft.Web.Administration 程序集错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27166276/
我正在寻找允许提升选定操作权限的正确方法。 许多产品都提供类似的东西。 例如,如果您打开了 UAC,并且在浏览受限文件夹时使用 Total Commander(以基本权限运行),您将获得: 如果您按
我在 Windows Azure 云上有一个应用程序,并且正在使用 Windows Azure 共置缓存。 有时,当我发布网站/web服务时,调用DataCacheFactory.GetCache方法
程序员应该对系统管理员了解多少?我的意思是,显然越多越好。但是为了论证起见,程序员应该知道的平均值是多少? 我见过我的 friend (一个程序员)做数据库架构设计、数据库备份、数据库调优、数据迁移等
我想在 Zabbix 代理上运行命令: 一些简单的 unix 命令,用于获取我们的报告数据。 当代理端需要进行某些处理时。 似乎正在讨论多种方法。那么如何在 Zabbix Agent 上执行此类命令呢
谁能告诉我应用程序注册(以及企业应用程序)下的“角色和管理员”有什么用吗? 似乎它始终具有“云应用程序管理员”,但此角色未分配给服务主体。我没有找到任何有关它的文档,也许我在这里遗漏了一些东西。 谢谢
这是这个问题的镜像: https://serverfault.com/questions/4176/what-sysadmin-things-should-every-programmer-know
我们在其中一台服务器上设置了一个 MySQL 数据库。我们一直在使用MySQL Administrator 1.2.12 程序来管理服务器上的数据库。此服务器是由不再在组织中的人员设置和配置的。 我正
问: 您好,脚本专家!如何从本地 Administrators 组中删除组? -- SB 答: 您好,SB。有一位脚本专家还隐约记得早年一部名为 Brande
使用MySQL Administrator 登录,报错: Either the server service or the configuration file could not be found
MySQL Administrator,在余下时间里我假定你已经安装了MySQLAdministrator,并且将使用相关图例。 500)this.style.width=500;"b
我正在运行一个分布式 MinIO 集群,它有 4 个节点和多个用户帐户,用于不同的目的/存储桶。我需要为用户编写一个方便的脚本或简单的网络应用程序,他们可以在其中更改密码。 如何更改现有用户的密码?
如何轻松复制生产数据库(mydb)以创建开发数据库(mydb-dev)? rethinkdb restore命令似乎没有指定输出数据库名称的选项。它仅具有选择我要从转储还原的数据库的选项。我正在使用r
我有一个帐户,例如(MyDomain\User1),它只能访问安装了 Windows Server 2008 R2 的 VM,没有其他权限。 我根本无法访问 Active Directory (AD)
我正在使用 Django 1.8.4(最新)。 我被官方 Django 教程步骤困扰:https://docs.djangoproject.com/en/1.8/intro/tutorial02/#c
在 Azure 门户中,当我查看服务主体的“角色和管理员”选项卡时,我看到多个角色,包括几个自定义角色: 我可以使用 PowerShell 获取角色定义: PS C:\> Get-MgRoleMana
Microsoft.Web.Administration 程序集位于我计算机上的 C:\Windows\System32\inetsrv 中。我相信它是作为 IIS 的一部分安装的。该大会也在 GAC
在 cf10 任务调度程序中,如果我想链接程序,以便程序 B 在程序 A 结束后启动,我是单击程序 B 的“链接任务”还是在“完成时”输入中提供程序 B 的 url对于程序A? 最佳答案 你两者都做。
就目前情况而言,这个问题不太适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、民意调查或扩展讨论。如果您觉得这个问题可以改进并可能重新开放,visit
我正在使用 VS2012 WPF Application & Install-shield 2013 LE 生成安装程序。 安装后,我注意到“以管理员身份运行”选项没有显示在 桌面图标 资源管理器的上
我们的应用程序需要通过 COM 接口(interface)与另一个程序通信。如果其他程序以“以管理员身份运行”启动,则该界面将不起作用。想要检测此其他进程是否处于此状态并警告用户。有任何想法吗? 寻找
我是一名优秀的程序员,十分优秀!