myr*_*a72 7 c# asp.net iis asp.net-mvc asp.net-mvc-4
我有一个控制台应用程序,它使用Microsoft.Web.Administration远程管理远程服务器上的IIS(我使用此Credentials for ServerManager.OpenRemote - 修改了ahadmin属性,打开了TCP端口135.我还使用了模拟).一切正常 - 我可以远程创建站点和应用程序池等.
但是,当我试图在ASP.NET MVC 4应用程序中执行相同的操作时,我收到此错误:
System.Runtime.InteropServices.COMException:从机器"remoteServerIP"检索具有CLSID {2B72133B-3F5B-4602-8952-803546CE3344}的远程组件的COM类工厂失败,原因是以下错误:80040154"remoteServerIP".
我知道很多人都会收到这个错误,我看到了很多关于它的帖子,但是对我来说没什么用.我尝试将我的MVC应用程序切换到平台目标X86(检索由于以下错误导致CLSID {XXXX}失败的组件的COM类工厂: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.
myr*_*a72 13
我找到了解决方案.问题是我的MVC应用程序使用了错误版本的Microsoft.Web.Administration.dll.
当我调试控制台应用程序时,我能够使用此代码从本地IIS获取站点列表
ServerManager serverManager = new ServerManager();
Run Code Online (Sandbox Code Playgroud)
和使用此代码的远程IIS中的站点列表
ServerManager serverManager = ServerManager.OpenRemote("remoteServerIpAddress");
Run Code Online (Sandbox Code Playgroud)
一切都很好.然后我在MVC应用程序中输入完全相同的代码,当我尝试从远程IIS获取站点列表时,我从问题中获得了异常.在尝试从本地IIS获取站点列表时,我从IIS Express获取了网站.服务器管理器似乎连接到IIS Express而不是完整的IIS,但我起初并没有太注意这一点.不幸.
无意中我发现这篇文章发布了Microsoft.Web.Administration.ServerManager查找IISExpress applicationHost.config的错误目录,从那里我发现了
如果您正在使用Microsoft.Web.Administration ...的应用程序在IISExpress上运行,则由于IIS中的aspnet.config中的程序集重定向,它将始终回退到Microsoft.Web.Administration版本7.9.0.0表达.
我正在使用IIS Express进行调试,它将我重定向到错误版本的Microsoft.Web.Administration.dll - 7.9.0.0,我需要7.0.0.0,完全由IIS使用.所以我在完整的本地IIS上托管了我的MVC应用程序,在那里调试它并且它工作了!我成功从远程IIS检索了一个站点列表.希望它可以帮助某人.
归档时间: |
|
查看次数: |
6104 次 |
最近记录: |