在VS 2010中包含Microsoft.Web.Administration程序集引用的正确方法

时间:2014-04-16 07:41:03

标签: c# .net visual-studio-2010 iis

我遇到了这个问题earlier already。这次我将我的开发环境从一个桌面移动到另一个桌面,问题又回来了。请注意,要将我的解决方案从旧环境移动到新环境,我复制了整个解决方案文件夹。在新桌面中使用相同版本的Visual Studio 2010打开时,代码如下:

using (ServerManager serverManager = new ServerManager())
{
    //Go through all the sites
    for (int s = 0; s < serverManager.Sites.Count; s++) //EXCEPTION HERE!!!
    {
        //Do work
    }
}

产生了这个例外:

GetAdminSection; GetSectionInternal; SitesSectionCreator; Initialize;
SitesCollectionCreator; Initialize; collectData.
Filename: redirection.config 
Error: Cannot read configuration file

如果它在旧桌面上运行得非常好,它为什么会这样做...无论如何,我的问题:

包含Microsoft.Web.Administration程序集引用的正确方法是什么?

enter image description here

我目前的做法是通过Solution - &gt;链接到此dll。 References - &gt; Add reference - &gt; Browser然后指向此文件:

C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll

我担心的是,当我的解决方案部署在那里时,会在生产机器上弹出此异常。

2 个答案:

答案 0 :(得分:1)

是的,这是引用Microsoft.Web.Administration程序集的正确方法。 它仅适用于IIS 7.0及更高版本。您是否安装了IIS功能(转到控制面板中的Turn Windows features on or off向导)。

http://www.iis.net/learn/manage/scripting/how-to-use-microsoftwebadministration

这是我实例化ServerManager的方式,遇到类似于你的类似问题:

ServerManager iisManager = ServerManager.OpenRemote(Environment.MachineName.ToLower());

答案 1 :(得分:0)

使用此程序集的正确方法是在安装IIS后添加引用。所以你所做的是对的。

部署问题是不必要的,因为您始终可以创建部署包(例如MSI),因此请确保将IIS设置为先决条件,并在应用程序最终运行时存在预期的程序集。 (Microsoft确实将此程序集注册到GAC。)

关于您需要收集更多信息的例外,

  1. 在运行时加载了哪个Microsoft.Web.Administration副本? GAC中可以有多个版本。
  2. redirection.config文件是否包含正确的数据?文件权限是否正确?
  3. 如果以管理员身份运行Visual Studio,问题是否仍然存在?