2015-02-11 100 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

相關問題