我想阅读网络服务信息,尤其是来自iis的地址。 对于IIS7,我可以使用此代码阅读以下信息。
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 :(得分:3)
不。 IIS与它无关。 IIS仅关注与托管相关的操作和服务请求。如果您正在讨论服务,您可能希望查看使您的服务可被发现,公开元数据和WSDL。但是,这不会暴露任何文件或服务的任何“内部”...只是界面(面向公众的详细信息)...例如,如果您有RESTful服务,它背后的物理文件将不会公开。 / p>
答案 1 :(得分:-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时,可以找到Service1.asmx文件。所以我得到了构建Web服务地址所需的信息。
//What I need http://localhost:8091/Service1.asmx
string adress = protocol + "://localhost:" + endP.Port + "/" + " *.asmx file from PhysicalPath";