- 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/
我有一个几乎可以构建的Maven / Grails应用,但在web.xml上找不到[my-app]\webapp\WEB-INF\web.xml。但是目录结构像往常一样包含web-app文件夹,而不是
正如我在标题中提到的:我想知道 web-service 和 web-socket 之间的区别?我们什么时候使用每一个? 谢谢! 最佳答案 一个web service是一个响应客户端 SOAP/REST
让我们看一个示例场景: 客户端打开一个网站并找到他从文本框中输入的两个数字的总和。然后单击“添加”按钮。两个参数通过 HTTP GET 发送到服务器,在服务器上写入 PHP 代码以添加数字,结果为回声
我知道这是一个老问题,肯定已经被回答了数百次,但我还无法找到令人满意的答案。 我正在创建一个应用程序,其他应用程序(移动/网络)将使用该应用程序来获取数据。现在我有两个选择: 将我的应用程序创建为简单
通过 Web 作业部署新功能有 3 种方法: 创建一个新的 Web 应用,并部署一个包含该函数的 Web 作业。 向现有 Web 作业添加一项新函数(这样您现在在一个 Web 作业中就拥有了多个函数)
我收到来自网络场景的通知,上面写着“问题”和“确定”。我想在问题发生时包含网络响应的内容。我不担心标题值,只担心网页的内容. 这是我可以在通知设置中引用的变量吗? 最佳答案 不幸的是 zabbix 不
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
嗨,这是一个理论问题,但我真的无法弄清楚 Web 应用程序、基于 Web 的应用程序和基于云的应用程序之间的区别。这个你能帮我吗。 最佳答案 @Matt 是对的 - 这真的无关紧要,但是,为了清楚起见
我正在尝试使用多个 Web 服务,这些服务在它们的 wsdl 中重新定义了一些相同的公共(public)类。我目前在网站中引用了它们,但我想转换为 Web 应用程序。 由于一些相同的类是从多个 Web
一个。我必须考虑哪些事项?b.当前应用程序正在执行多个存储过程。如果我创建等效的方法来执行这些过程,会有什么风险或挑战。 最佳答案 在架构上,将网络应用程序转换为网络服务时必须考虑的一件事是,对方法和
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 5年前关闭。 Improve thi
网络 API 和网络服务之间有什么区别吗?或者它们是同一个吗? 最佳答案 网络服务通常提供 WSDL您可以从中自动创建客户端 stub 。 Web 服务基于 SOAP protocol 。ASP.NE
我已经获得了我需要的所有资源。我将 Web 服务放入应用程序服务环境中,然后将 NSG 连接到应用程序服务环境使用的子网。然后,我允许 VNET 内的应用程序与 Web 服务进行通信,但它无法正常工作
我已经获得了我需要的所有资源。我将 Web 服务放入应用程序服务环境中,然后将 NSG 连接到应用程序服务环境使用的子网。然后,我允许 VNET 内的应用程序与 Web 服务进行通信,但它无法正常工作
我正在使用 stub 将我的网络服务相关测试与实际网络服务隔离开来。 你/我应该如何合并测试以确保我制作的响应与实际的网络服务匹配(我无法控制它)? 我不想知道怎么做,而是何时何地? 我应该为测试数据
我在互联网上搜索了很多,但我仍然没有得到网络服务和网络 API 之间的明显区别?我在某处读到所有 Web 服务都是 API,但所有 API 都不是 Web 服务。如何? 我所知道的是两者都允许利用其他
假设我已经完成了使用 JavaEE 制作的 Web 应用程序。这个 Web 应用程序包含登录系统,但最后它是非常基本的 Web 应用程序。我使用的是 GlassFish 3.1.2.2。 我想知道一旦
我希望设计者能够打开与我相同的解决方案文件。这可以通过 Expressions Web 实现吗? 最佳答案 简短的回答是“不”;但这是一个非常常见的请求,我知道很多人都希望下一个版本(无论何时)对此有
我正在尝试在 CF10 中创建一个 Web 服务对象。我已验证它在 SoapUI 中按预期工作。但是,当我在 CF 中运行它时,我得到一个错误,它无法找到在 WSDL 的导入语句中导入的 XSD。这是
我的要求是开发一个 Web 服务,充当外部 Web 服务和客户端之间的中间人。 我知道,我可以为我的服务设计一个wsdl,然后将外部wsdl映射到代码中我的wsdl。我的问题是有一个开源 api/工具
我是一名优秀的程序员,十分优秀!