0及以上版本托管服务音信

时间:2019-09-23 12:07来源: 操作系统
近年写了个扫描IIS托管站点然后定期注册到Consul的小工具,随便网络拷贝了个帮衬类,搞完本机测量试验没难题,扔到服务器开掘壮大的一个这一个。。 System.Runtime.InteropServices.COMExce

近年写了个扫描IIS托管站点然后定期注册到Consul的小工具,随便网络拷贝了个帮衬类,搞完本机测量试验没难题,扔到服务器开掘壮大的一个这一个。。

System.Runtime.InteropServices.COMException (0x柒仟五千): 未知错误(0x九千四千)
在 System.DirectoryServices.DirectoryEntry.Bind(Boolean throwIfFail)
在 System.DirectoryServices.DirectoryEntry.Bind()
在 System.DirectoryServices.DirectoryEntry.get_IsContainer()
在 System.DirectoryServices.DirectoryEntries.ChildEnumerator..ctor(DirectoryEntry container)

查了查资料开掘是:

这段格外代码注明 IIS://localhost/W3SVC/1 的ADSI provider空头支票可能无法访谈。

展开IIS管理器你能够见到服务器的localhost是存在的并正在运转,且主站点ID确实是1。那注解难题是出新在 IIS://localhost的ADSI provider。

坦白点正是:而IIS 7暗中认可并从未安装ADSI provider。

消除方案:“调控面板”->“程序和效用”->面板侧面“打开或关闭windows效用”->“Web服务器”->“处理工科具”->“IIS 6管理包容性”->“IIS 元数据库包容性”。

代码部分相比轻便:

using System.ServiceProcess;using System.DirectoryServices;public class IISManager{    public static List<IISWebServiceInfo> GetLocalWebSeriviceInfo_IIS6()    {        DirectoryEntry rootfolder = new DirectoryEntry("IIS://localhost/W3SVC");        foreach (DirectoryEntry child in rootfolder.Children)        {            if (child.SchemaClassName == "IIsWebServer")            {                 child.Properties["ServerComment"].Value.ToString();//服务名                     child.Properties["ServerState"].Value;//服务状态                 child.Properties["ServerBindings"].Value;//绑定信息            }        }     } }

坏处比较精通正是只帮衬IIS6及以下版本(安装ADSI provider),太费事。。

IIS7.0及以上版本获取服务新闻能够使用Microsoft.Web.Administration,Nuget就能够搜到

图片 1

只得说微软依然相比较拼的。。那是要跨平台的点子啊(Linux版IIS指日可待了呢。。。)

代码更简便了:

 using Microsoft.Web.Administration;    class Program    {        static void Main(string[] args)        {             ServerManager sm = new ServerManager();            foreach (var s in sm.Sites)            {                Console.WriteLine("网站名称:{0}", s.Name);                Console.WriteLine("运行状态:{0}", s.State.ToString;                foreach (var tmp in s.Bindings)                {                    System.Console.WriteLine("t类型:{0}", tmp.Protocol);                    System.Console.WriteLine("tIP 地址:{0}", tmp.EndPoint.Address.ToString;                    System.Console.WriteLine("t端口:{0}", tmp.EndPoint.Port.ToString;                    System.Console.WriteLine("t主机名:{0}", tmp.Host);                }            }            Console.ReadKey();        }    }

自然,在windows操作系统获取IIS新闻是亟需管理员权限的

编辑: 操作系统 本文来源:0及以上版本托管服务音信

关键词: