【发布时间】:2015-03-05 23:22:52
【问题描述】:
我编写了以下代码来获取 IIS 上的站点列表。在控制台中,它可以正常工作并执行我想要的操作,但是在 Web 表单中,当我打印输出时,它会返回 Visual Studio 文件夹中存在的所有项目。怎么会这样?
public partial class _Default : Page
{
protected void Page_Load(object sender, EventArgs e)
{
string s;
string serverName = "localhost";
var nsm = new ServerManager();
using (Microsoft.Web.Administration.ServerManager sm = Microsoft.Web.Administration.ServerManager.OpenRemote(serverName))
{
int counter = 1;
foreach (var site in sm.Sites)
{
var p = site.Applications[0].VirtualDirectories[0].PhysicalPath;
int b = 0;
foreach (Microsoft.Web.Administration.Binding binding in site.Bindings)
b = binding.EndPoint.Port;
s = String.Format(CultureInfo.InvariantCulture
, "Site number {0} : , {1} PhysicalPath : {2} , Port:{3} {4} "
, counter.ToString(), site.Name, p, b, Environment.NewLine);
counter++;
Response.Write(s);
}
}
}
}
【问题讨论】:
-
这是同一代码的另一个问题
-
您是否尝试过单步执行代码..?如果是这样,请说明问题发生在哪里..您可以将您正在使用 string.Format 方法的
s变量中的项目添加到 List变量然后调用列表上的排序方法然后调用 Response.Write(s) -
当我将 webform 代码运行到“ using (Microsoft.Web.Administration.ServerManager...”时,它会返回具有以下值的“nsm”:{Microsoft.Web.Administration.ServerManager} 但它与控制台版本不同,不包含任何内容。
标签: c# asp.net iis webforms console