控制台和 ASP.net 网络表单中的不同输出
Different outputs in Console and ASP.net Webform
我编写了以下代码来获取 IIS 上的站点列表。在控制台中,它正常工作并执行我想要的操作,但是在 webforms 中,当我打印输出时它 returns 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);
}
}
}
}
发生这种情况是因为您 运行 您的代码使用 visual studio 的内置托管服务器,可以是 Cassini 或 IIS express。
尝试将您的 asp.net 网络应用程序托管到您的 windows IIS,然后 运行 该应用程序。这应该会给您与您在控制台应用程序中得到的答案相同的答案。
我编写了以下代码来获取 IIS 上的站点列表。在控制台中,它正常工作并执行我想要的操作,但是在 webforms 中,当我打印输出时它 returns 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);
}
}
}
}
发生这种情况是因为您 运行 您的代码使用 visual studio 的内置托管服务器,可以是 Cassini 或 IIS express。
尝试将您的 asp.net 网络应用程序托管到您的 windows IIS,然后 运行 该应用程序。这应该会给您与您在控制台应用程序中得到的答案相同的答案。