gpt4 book ai didi

c# - ASP.NET MVC 4 中的 ServerManager.OpenRemote 错误 80040154 CLSID {2b72133b-3f5b-4602-8952-803546ce3344}

转载 作者:太空狗 更新时间:2023-10-29 20:02:46 28 4
gpt4 key购买 nike

我有一个控制台应用程序,它使用 Microsoft.Web.Administration 远程管理远程服务器上的 IIS(我使用了这个 Credentials for ServerManager.OpenRemote - 修改了 ahadmin 属性,打开了 TCP 端口 135。我还使用了模拟)。一切正常 - 我可以远程创建站点和应用程序池等。

但是当我试图在 ASP.NET MVC 4 应用程序中做同样的事情时,我得到了这个错误:

System.Runtime.InteropServices.COMException: Retrieving the COM class factory for remote component with CLSID {2B72133B-3F5B-4602-8952-803546CE3344} from machine "remoteServerIP" failed due to the following error: 80040154 "remoteServerIP".

我知道很多人都会遇到这个错误,我也看到了很多关于它的帖子,但对我来说没有任何效果。我尝试将我的 MVC 应用程序切换到平台目标 X86(Retrieving the COM class factory for component with CLSID {XXXX} failed due to the following error: 80040154),在远程计算机上我为 HKEY_LOCAL_MACHINE\SOFTWARE\Classes\CLSID{2b72133b-3f5b-4602-8952-803546ce3344} 和 HKEY_CLASSES_ROOT\CLSID{2b72133b- 启用了完全权限3f5b-4602-8952-803546ce3344} 用于我用来模拟的帐户。问题似乎出在 MVC 和控制台应用程序之间的某些差异上,但我无法弄清楚它是什么。

我在 Windows 7 x64 上,远程服务器 - Windows Server 2008 R2 x64。两台机器上都有 IIS 7.5。

最佳答案

我找到了解决方案。问题是我的 MVC 应用程序使用了错误版本的 Microsoft.Web.Administration.dll。

当我调试控制台应用程序时,我能够使用此代码从本地 IIS 获取站点列表

ServerManager serverManager = new ServerManager();

以及使用此代码的远程 IIS 站点列表

ServerManager serverManager = ServerManager.OpenRemote("remoteServerIpAddress");

一切正常。然后我将完全相同的代码放入 MVC 应用程序中,当我尝试从远程 IIS 获取站点列表时,我得到了问题的异常。当试图从本地 IIS 获取站点列表时,我从 IIS Express 获取了网站。服务器管理器似乎连接到 IIS Express 而不是完整的 IIS,但起初我并没有太注意这一点。不幸的是。

我无意中发现了这篇文章 Microsoft.Web.Administration.ServerManager looking in wrong directory for IISExpress applicationHost.config ,从那里我发现

If the application, in which you are using Microsoft.Web.Administration ..., is running on IISExpress, it will always fallback to Microsoft.Web.Administration version 7.9.0.0 due to an assembly redirect in the aspnet.config in the IIS express.

我正在使用 IIS Express 进行调试,它把我重定向到错误版本的 Microsoft.Web.Administration.dll - 7.9.0.0,而我需要 7.0.0.0,完整的 IIS 使用它。所以我在完整的本地 IIS 上托管了我的 MVC 应用程序,在那里调试它并且它工作了!我成功地从远程 IIS 检索了站点列表。希望对某人有所帮助。

关于c# - ASP.NET MVC 4 中的 ServerManager.OpenRemote 错误 80040154 CLSID {2b72133b-3f5b-4602-8952-803546ce3344},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28432807/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com