运行时的动态 IP 限制
Dynamic Ip Restriction on Runtime
我想 add/remove IP 限制 运行 时间到 MVC 5 项目。
我搜索了一下,找到了两种方法。
运行时间更改动态 IP 限制模块。
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();
}
}
}
这样,serverManager.CommitChanges
是否重启IIS或应用程序?
Best way to implement request throttling in ASP.NET MVC?
我将为此目的使用节流。
如果应用程序或 IIS 尚未重新启动,我更喜欢第一种方式,因为它在 IIS 级别。
您有什么建议是最好的还是其他方法?
第一种方式重新启动应用程序。第二种方法是在操作级别上工作(已经创建了对象)。
因此,我 blocking/redirecting 请求 Begin_Request。我正在添加要阻止缓存的 ips。然后,如果请求 ip 在黑名单中,我将在开始请求时读取缓存值,我将其重定向到 404.html.
private void Application_BeginRequest(object sender, EventArgs e)
{
using (var mylifeTimeScope = IoCBootstrap.Container.BeginLifetimeScope())
{
var ipHelper = mylifeTimeScope.Resolve<IIpHelper>();
if (ipHelper.BlackListIp())
{
HttpContext.Current.Response.StatusCode = 404;
HttpContext.Current.Response.Redirect("404.html");
}
}
}
ipHelper.BlackListIp()
检查ip是否在黑名单中
我想 add/remove IP 限制 运行 时间到 MVC 5 项目。
我搜索了一下,找到了两种方法。
运行时间更改动态 IP 限制模块。
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(); } } }
这样,serverManager.CommitChanges
是否重启IIS或应用程序?
Best way to implement request throttling in ASP.NET MVC?
我将为此目的使用节流。
如果应用程序或 IIS 尚未重新启动,我更喜欢第一种方式,因为它在 IIS 级别。
您有什么建议是最好的还是其他方法?
第一种方式重新启动应用程序。第二种方法是在操作级别上工作(已经创建了对象)。
因此,我 blocking/redirecting 请求 Begin_Request。我正在添加要阻止缓存的 ips。然后,如果请求 ip 在黑名单中,我将在开始请求时读取缓存值,我将其重定向到 404.html.
private void Application_BeginRequest(object sender, EventArgs e)
{
using (var mylifeTimeScope = IoCBootstrap.Container.BeginLifetimeScope())
{
var ipHelper = mylifeTimeScope.Resolve<IIpHelper>();
if (ipHelper.BlackListIp())
{
HttpContext.Current.Response.StatusCode = 404;
HttpContext.Current.Response.Redirect("404.html");
}
}
}
ipHelper.BlackListIp()
检查ip是否在黑名单中