Yo también estaba interesado en esto.
Al principio estaba usando la interfaz de usuario en IIS7 para poner en la lista negra las direcciones IP.
me hizo tomar un vistazo en el enlace de Rick Strahl ha mencionado anteriormente, pero encontró un gran recurso aquí:
http://www.iis.net/configreference/system.webserver/security/ipsecurity/add
El ejemplo de código en la página que muestra cómo realizar la acción usando C#. Aquí está el recorte de ese sitio
using System;
using System.Text;
using Microsoft.Web.Administration;
internal static class Sample
{
private static void Main()
{
using (ServerManager serverManager = new ServerManager())
{
Configuration config = serverManager.GetApplicationHostConfiguration();
ConfigurationSection ipSecuritySection = config.GetSection("system.webServer/security/ipSecurity", "Default Web Site");
ConfigurationElementCollection ipSecurityCollection = ipSecuritySection.GetCollection();
ConfigurationElement addElement = ipSecurityCollection.CreateElement("add");
addElement["ipAddress"] = @"192.168.100.1";
addElement["allowed"] = false;
ipSecurityCollection.Add(addElement);
ConfigurationElement addElement1 = ipSecurityCollection.CreateElement("add");
addElement1["ipAddress"] = @"169.254.0.0";
addElement1["subnetMask"] = @"255.255.0.0";
addElement1["allowed"] = false;
ipSecurityCollection.Add(addElement1);
serverManager.CommitChanges();
}
}
}
Para obtener el paquete Microsoft.Web.Administration, en Herramientas de Visual Studio Goto -> Gestor de paquetes Nuget -> Gestor de paquetes de consola.
a continuación, escriba:
Install-Package Microsoft.Web.Administration
Otra forma de realizar la misma tarea consiste en utilizar la línea de comandos y el comando appcmd.
El siguiente comando hace lo mismo:
appcmd.exe set config "Default Web Site/SSM" -section:system.webServer/security/ipSecurity /+"[ipAddress='192.168.100.1',allowed='False']" /commit:apphost
y podría ser llamado desde el código usando:
string website = "Default Web Site/SSM";
string ipAddress = "192.168.100.1";
string allowDeny = "False";
string cmd = string.Format("%systemroot%\\system32\\inetsrv\\appcmd.exe set config \"{0}\" -section:system.webServer/security/ipSecurity /+\"[ipAddress='{1}',allowed='{2}']\" /commit:apphost", website, ipAddress, allowDeny);
Process.Start(cmd);
El comando anteriores, pero resulta que si se llama desde C# se queja diciendo "El sistema no puede encontrar el archivo especificado Excepción". Para evitarlo, debe proporcionar un nombre de usuario/contraseña de administrador.
Aquí es la función:
void BlacklistIP(string ipAddress)
{
string website = "Default Web Site/SSM";
string allowDeny = "False";
string domain = "";
string args = string.Format(" set config \"{0}\" -section:system.webServer/security/ipSecurity /+\"[ipAddress='{1}',allowed='{2}']\" /commit:apphost", website, ipAddress, allowDeny);
System.Security.SecureString password = new System.Security.SecureString();
password.AppendChar('y');
password.AppendChar('o');
password.AppendChar('u');
password.AppendChar('r');
password.AppendChar('p');
password.AppendChar('a');
password.AppendChar('s');
password.AppendChar('s');
password.AppendChar('w');
password.AppendChar('o');
password.AppendChar('r');
password.AppendChar('d');
Process.Start(@"C:\windows\System32\inetsrv\appcmd.exe", args, "Administrator", password, domain);
}
Et Voila!