使用C#来管理IIS

问题描述 投票:2回答:3

我想创建一个应用程序,将部署一个网站。 基本上,我只是想让这个应用程序将发布文件复制到webserver的新文件夹中,将网站改为该文件夹,然后回收应用程序池。

我发现,我应该可以用Microsoft.Web.Administration来实现这个功能。 这里是我在一个windows窗体应用程序中的代码,只是想玩玩这个。

        try
        {
            using (Microsoft.Web.Administration.ServerManager sm = Microsoft.Web.Administration.ServerManager.OpenRemote("webservername"))
            {
                foreach (var site in sm.Sites)
                {
                    MessageBox.Show(string.Format("{0}", site.Name));
                }
            }

        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.ToString());

我只是简单地尝试循环浏览网站,并显示名称作为我的第一次尝试。 我得到的错误如下。

System.InvalidCastException: Unable to cast COM object of type 'System.__ComObject' to interface type 'Microsoft.Web.Administration.Interop.IAppHostWritableAdminManager'. 该操作失败的原因是,由于以下错误,在COM组件上对IID为'{FA7660F6-7B3F-4237-A8BF-ED0AD0DCBBD9}的接口的QueryInterface调用失败。接口未注册(HRESULT异常:0x80040155)。

在 Microsoft.Web.Administration.ConfigurationManager.CreateAdminManager[TClass,TInterface](WebConfigurationMap webConfigMap, Boolean isAdminConfig)时,由于以下错误而失败:接口未注册(来自 HRESULT 的异常:0x80040155)。

在 Microsoft.Web.Administration.ConfigurationManager.CreateWritableAdminManager(WebConfigurationMap webConfigMap, String configPathToEdit, Boolean isAdminConfig)

在 Microsoft.Web.Administration.ConfigurationManager.CreateConfiguration(WebConfigurationMap configMap, String configPathToEdit, Boolean isAdminConfig)

在 Microsoft.Web.Administration.ConfigurationManager.GetConfiguration(String rawConfigurationPath, String cacheKey, Boolean isAdminConfig)

在 Microsoft.Web.Administration.ConfigurationManager.GetApplicationHostConfiguration()

在Microsoft.Web.Administration.ServerManager.GetApplicationHostConfiguration()处。

在Microsoft.Web.Administration.ServerManager.get_SitesSection()处。

在Microsoft.Web.Administration.ServerManager.get_Sites()处。

出错的一行是。

foreach (var site in sm.Sites)

我在本地的IIS8 express和windows server 2008 IIS 7. 5上都试过了。

我做错了什么?

c# visual-studio-2013 deployment iis-7.5
3个回答
1
投票

你可能需要检查以下几点。

  1. 服务器的名称。如果不确定的话,可以尝试在IIS管理中寻找。
  2. .dll的版本是适合你的IIS版本的。
  3. .net框架的版本。因为它使用System.Web,所以它依赖于完整版本的.net框架,但不依赖于客户端配置文件子集。

0
投票

你正在尝试管理一个远程服务器,所以......。

  1. 运行代码的账户必须是该远程服务器的本地管理员。
  2. DCOM端口必须在防火墙上打开。

0
投票

运行DCOM代码的机器 码子 正在执行的需要安装IIS管理脚本和工具Windows功能。

在Windows客户端操作系统上或Windows Server 2008 R2及更早的操作系统上,您可以通过以下步骤安装它。

  1. 打开控制面板>程序>打开或关闭Windows功能。
  2. 向下钻到Internet信息服务> Web管理工具,并勾选 IIS管理脚本和工具.
© www.soinside.com 2019 - 2024. All rights reserved.