2015-02-11 54 views
-1

我想阅读来自iis的web服务信息,特别是地址。 对于IIS7,我可以使用此代码阅读以下信息。是否有可能从IIS获取asp.net网络地址

var iisManager = new ServerManager(); 
sites = iisManager.Sites; 

foreach (var site in sites) 

{ 
    IISService serv = new IISService(); 

    serv.Name = site.Name; 
    serv.State= site.State.ToString(); 
    serv.PhysicalPath= site.Applications["/"].VirtualDirectories[0].PhysicalPath; 

allServices.Add(serv); 

}

对于II6

DirectoryEntry IIsEntities = new DirectoryEntry(Path); 

foreach (DirectoryEntry IIsEntity in IIsEntities.Children) 
{ 
    if (IIsEntity.SchemaClassName == "IIsWebServer") 
    { 
     yield return new Website 
     (
      IIsEntity.Properties["ServerComment"].Value.ToString(), 
      GetPath(IIsEntity), 
      (ServerState)IIsEntity.Properties["ServerState"].Value 

     ); 
    } 
} 

我可以读取上面的信息,但我想读ASMX Web服务的端点信息。 那就像: http://localhost:8091/Service1.asmx

是否有可能读取端口号或asmx文件的名称?

+0

不,这是不可能的,因为它们可以是路径之外的任何地方。你必须找到配置文件。 – VMAtm 2015-02-11 08:41:28

+0

当我询问PhysicalPath中的Directory.GetFiles * .asmx时,可以找到Service1.asmx文件。其实端口号对我来说是足够的信息。 – 2015-02-11 08:45:13

+0

端口是一个管理选项,不对应磁盘上的文件。 – VMAtm 2015-02-11 11:15:51

回答

3

没有。 IIS与它无关。 IIS只关心与托管相关的操作和服务请求。如果您正在讨论服务,那么您可能需要考虑如何让您的服务可以被发现,从而暴露元数据和WSDL。但是,这不会暴露任何文件或服务的任何“内部”......只是接口(面向公众的细节)......例如,如果您有一个RESTful服务,它后面的物理文件将不会公开。

+0

我可以用绑定信息构建本地地址,看看我的答案。 – 2015-02-11 09:51:43

+1

@AhmetArslan你的观点是什么?你已经输了我 – Leo 2015-02-11 10:29:23

+0

你可以检查我的下面的答案吗? – 2015-02-11 10:38:31

-1

我问IIS的本地地址,所以我可以成功地获得足够的信息,形成ASMX本地网络地址。

foreach (var site in sites) 
{ 
    IISService serv = new IISService(); 

    serv.Name = site.Name; 
    serv.State= site.State.ToString(); 
    serv.PhysicalPath= site.Applications["/"].VirtualDirectories[0].PhysicalPath; 

    System.Net.IPEndPoint endP = site.Bindings[0].EndPoint; 

    string protocol = site.Bindings[0].Protocol; 

    allServices.Add(serv); 
} 

我可以通过此解决方案(端口和协议)获取绑定信息。当我询问PhysicalPath中的Directory.GetFiles * .asmx时,I 可以找到Service1.asmx文件。所以我得到需要的信息来构建Web服务地址。

//What I need http://localhost:8091/Service1.asmx 

string adress = protocol + "://localhost:" + endP.Port + "/" + " *.asmx file from PhysicalPath"; 
+1

您只需阅读文件,这与IIS有关? – VMAtm 2015-02-11 11:16:55

+0

获取绑定信息与IIS相关。我简单地找到了文件,将它们合并,解决了我的问题。所以我想告诉你可能的解决方案。 – 2015-02-11 11:40:29

+0

如果您的代码没有此特权来读取特定文件夹中的文件,则这不起作用。或者服务在非IIS默认文件夹中进行托管。 – VMAtm 2015-02-11 12:01:04

相关问题