代码之家  ›  专栏  ›  技术社区  ›  user247702

Microsoft.Web.Administration.ServerManager正在连接到IIS Express,而不是完整的IIS

  •  3
  • user247702  · 技术社区  · 10 年前

    我正在使用此创建 ServerManager :

    [Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration")
    $serverManager = New-Object Microsoft.Web.Administration.ServerManager
    

    运行时 $serverManager.ApplicationPools | Select -Property Name 我得到:

    Name
    ----
    Clr4IntegratedAppPool
    Clr4ClassicAppPool
    Clr2IntegratedAppPool
    Clr2ClassicAppPool
    UnmanagedClassicAppPool
    

    运行时 $serverManager.Sites | Select -Property Bindings 我得到:

    Bindings
    --------
    {[http] :8080:localhost}
    {[http] *:23700:localhost}
    {[http] *:58996:localhost}
    {[http] *:62159:localhost}
    {[http] *:51643:localhost}
    {[http] *:64256:localhost}
    {[http] *:50934:localhost}
    {[http] *:53107:localhost}
    {[http] *:49414:localhost}
    {[http] *:59074:localhost}
    {[http] *:61886:localhost}
    {[http] *:57546:localhost}
    {[http] *:63087:localhost}
    {[http] *:63838:localhost}
    {[http] *:63727:localhost}
    {[http] *:60172:localhost}
    

    因此,它似乎正在连接到IIS Express,而不是我的完整IIS。如何使其连接到完整的IIS?这个 documentation 没有列出任何接受参数的重载,至少没有用于公共用途的重载。

    1 回复  |  直到 10 年前
        1
  •  4
  •   user247702    10 年前

    DLL有两个版本。完整IIS包含7.0.0.0,IIS Express包含7.9.0.0。这两个版本也在GAC中。

    指定版本7.0.0.0允许访问完整的IIS:

    [Void][Reflection.Assembly]::LoadWithPartialName("Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL")
    

    同时我也发现 LoadWithPartialName 已弃用,这是当前的方法:

    Add-Type -AssemblyName "Microsoft.Web.Administration, Version=7.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL"