我正在寻找一种从asp.net应用程序获取iis站点状态的方法。
我尝试从ServerManager对象获取状态,但是它不起作用
string ConnessioneDB = "server=127.0.0.1;user=userdb;database=reter;password=eLs3qp?4; ";
var iisManager = new ServerManager();
MySqlConnection conn = new MySqlConnection(ConnessioneDB);
conn.Open();
MySqlCommand truncate = conn.CreateCommand();
truncate.CommandText = "truncate table hosting_win";
truncate.ExecuteNonQuery();
foreach (Site site in iisManager.Sites)
{
var hosting = site.Name;
var stato = site.State;
if (hosting != "Default FTP Site" && hosting != "Default Web Site" && hosting != "GetIIS")
{
var server_address = new System.Net.WebClient().DownloadString("http://icanhazip.com");
var binding = GetSiteBindings(site);
string sql_bindings = "";
if (binding != null)
{
foreach (var sitebinding in binding)
{
if (sitebinding != null)
{
var bindingInformation = sitebinding.BindingInformation;
string result = bindingInformation.Substring(bindingInformation.LastIndexOf(":") + 1);
sql_bindings += result + ",";
}
}
MySqlCommand insert = conn.CreateCommand();
insert.CommandText = "insert into hosting_win (hosting,server_address,binding,stato) values (@hosting,@server_address,@binding,@stato)";
insert.Parameters.AddWithValue("@hosting", hosting);
insert.Parameters.AddWithValue("@server_address", server_address);
insert.Parameters.AddWithValue("@binding", sql_bindings);
insert.Parameters.AddWithValue("@stato", stato);
insert.ExecuteNonQuery();
}
}
}
conn.Close();
为什么我无法获得网站状态?
答案 0 :(得分:0)
据我所知,如果您的网站包含FTP站点,它将得到此错误。由于ftp站点没有包含应用程序池。
我建议您先尝试检查该站点是否为ftp站点,然后才能获取站点状态。
有关我的测试演示的详细信息,您可以参考以下代码:
using Microsoft.Web.Administration;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace IISgetStatus
{
public partial class Status : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
var iisManager = new ServerManager();
string sitedisplay = null;
foreach (Site site in iisManager.Sites)
{
var hosting = site.Name;
string bindingdisplay = null;
if (hosting != "ftpsite")
{
var stato = site.State;
foreach (Binding binding in site.Bindings)
{
bindingdisplay = bindingdisplay + " Binding:\n BindingInformation: " +
binding.BindingInformation;
if (binding.Protocol == "https")
{
// There is a CertificateHash and
// CertificateStoreName for the https protocol only.
bindingdisplay = bindingdisplay + "\n CertificateHash: " +
binding.CertificateHash + ": ";
// Display the hash.
foreach (System.Byte certhashbyte in binding.CertificateHash)
{
bindingdisplay = bindingdisplay + certhashbyte.ToString() + " ";
}
bindingdisplay = bindingdisplay + "\n CertificateStoreName: " +
binding.CertificateStoreName;
}
bindingdisplay = bindingdisplay + "\n EndPoint: " + binding.EndPoint;
bindingdisplay = bindingdisplay + "\n Host: " + binding.Host;
bindingdisplay = bindingdisplay + "\n IsIPPortHostBinding: " + binding.IsIPPortHostBinding;
bindingdisplay = bindingdisplay + "\n Protocol: " + binding.Protocol;
bindingdisplay = bindingdisplay + "\n ToString: " + binding.ToString();
bindingdisplay = bindingdisplay + "\n UseDsMapper: " + binding.UseDsMapper + "\n\n";
}
}
sitedisplay = sitedisplay + bindingdisplay + "\n";
}
Label1.Text = sitedisplay;
}
}
}