C# IIS站点限制特定的IP操作

原创 2007年10月12日 16:28:00

参考别人的代码:

using System;
using System.DirectoryServices;
using System.Reflection;
//using mscorlib;

namespace ConfigIIS
{
 /// <summary>
 /// Small class containing methods to configure IIS.
 /// </summary>
 class class1
 {
  /// <summary>
  /// The main entry point for the application.
  /// </summary>
  [STAThread]
  static void Main(string[] args)
  {
   try
   {
    // retrieve the directory entry for the root of the IIS server
    System.DirectoryServices.DirectoryEntry IIS = new System.DirectoryServices.DirectoryEntry("IIS://localhost/w3svc/1/root");

    // retrieve the list of currently denied IPs
    Console.WriteLine("Retrieving the list of currently denied IPs.");

    // get the IPSecurity property
    Type typ = IIS.Properties["IPSecurity"][0].GetType();
    object IPSecurity = IIS.Properties["IPSecurity"][0];

    // retrieve the IPDeny list from the IPSecurity object
    Array origIPDenyList = (Array) typ.InvokeMember("IPDeny",
     BindingFlags.DeclaredOnly |
     BindingFlags.Public | BindingFlags.NonPublic |
     BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);

    // display what was being denied
    foreach(string s in origIPDenyList)
     Console.WriteLine("Before: " + s);

    // check GrantByDefault.  This has to be set to true, or what we are doing will not work.
    bool bGrantByDefault = (bool) typ.InvokeMember("GrantByDefault",
     BindingFlags.DeclaredOnly |
     BindingFlags.Public | BindingFlags.NonPublic |
     BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);

    Console.WriteLine("GrantByDefault = " + bGrantByDefault);
    if(!bGrantByDefault)
    {
     typ.InvokeMember("GrantByDefault",
      BindingFlags.DeclaredOnly |
      BindingFlags.Public | BindingFlags.NonPublic |
      BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] {true});
    }

    // update the list of denied IPs.  This is a complete replace.  If you want to maintain what
    // was already being denied, you need to make sure those IPs are in here as well.  This area
    // will be where you will most likely modify to your needs as this is just an example.
    Console.WriteLine("Updating the list of denied IPs.");
    object[] newIPDenyList = new object[4];
    newIPDenyList[0] = "192.168.1.477, 255.255.255.0";
    newIPDenyList[1] = "192.168.1.76, 255.255.255.0";
    newIPDenyList[2] = "192.168.1.467, 255.255.255.0";
    newIPDenyList[3] = "192.168.1.106, 255.255.255.0";
    Console.WriteLine("Calling SetProperty");

    // add the updated list back to the IPSecurity object
    typ.InvokeMember("IPDeny",
     BindingFlags.DeclaredOnly |
     BindingFlags.Public | BindingFlags.NonPublic |
     BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] {newIPDenyList});
           
    IIS.Properties["IPSecurity"][0] = IPSecurity;           
    Console.WriteLine("Commiting the changes.");

    // commit the changes
    IIS.CommitChanges();
    IIS.RefreshCache();

    // check to see if the update took
    Console.WriteLine("Checking to see if the update took.");
    IPSecurity = IIS.Properties["IPSecurity"][0];
    Array y = (Array) typ.InvokeMember("IPDeny",
     BindingFlags.DeclaredOnly |
     BindingFlags.Public | BindingFlags.NonPublic |
     BindingFlags.Instance | BindingFlags.GetProperty, null, IPSecurity, null);
    foreach(string s in y)
     Console.WriteLine("After:  " + s);
   }
   catch (Exception e)
   {
    Console.WriteLine("Error: " + e.ToString());
   }
  }
 
 }
}

 

按照上述的代码运行出现以上问题, 不知道怎么解决, 如有解决方法请留言pengbincn@gmail.com谢谢

C:/Documents and Settings/Administrator>D:/Project/ConfigIIS/ConfigIIS/bin/Debug
/ConfigIIS.exe
Retrieving the list of currently denied IPs.
GrantByDefault = True
Updating the list of denied IPs.
Calling SetProperty
Error: System.Reflection.TargetInvocationException: 调用的目标发生了异常。 --->
System.ArgumentException: 参数不正确。
   --- 内部异常堆栈跟踪的结尾 ---
   at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr,
Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[]
namedParameters)
   at System.RuntimeType.InvokeMember(String name, BindingFlags invokeAttr, Bind
er binder, Object target, Object[] args, ParameterModifier[] modifiers, CultureI
nfo culture, String[] namedParameters)
   at System.Type.InvokeMember(String name, BindingFlags invokeAttr, Binder bind
er, Object target, Object[] args)
   at ConfigIIS.class1.Main(String[] args) in d:/project/configiis/configiis/cla
ss1.cs:line 68

不过将以上代码对应的代码替换能实现单个IP的限制。

typ.InvokeMember("IPDeny",
     BindingFlags.DeclaredOnly |
     BindingFlags.Public | BindingFlags.NonPublic |
     BindingFlags.Instance | BindingFlags.SetProperty, null, IPSecurity, new object[] {"192.168.1.477, 255.255.255.0"});

谁能帮我解决上面这个问题实现IIS的多IP限制 , 请联系我, EMAIL : pengbincn@gmail.com

C#操作IIS程序池及站点的创建配置实现代码

最近在做一个WEB程序的安装包;对一些操作IIS进行一个简单的总结;主要包括对IIS进行站点的新建以及新建站点的NET版本的选择,还有针对IIS7程序池的托管模式以及版本的操作...
  • li_xiao_ming
  • li_xiao_ming
  • 2014年07月28日 19:48
  • 1993

C# 启动/停止 iis 网站 例子源码(iis 6.0下测试通过)

#region IIS启动/停止 private enum eStates { Start = 2, Stop = 4,...
  • CatchMe_439
  • CatchMe_439
  • 2017年02月15日 10:21
  • 172

IIS7设置IP地址和域名限制

在IIS中可以通过IP地址域名设置来控制拒绝或允许特定范围内的IP对网站的访问权限,下面简单介绍如何在IIS7.5中设置,如下图,是IIS7.5的主界面 一、安装“IP地址和域限制”功能...
  • MaxWang_ABC
  • MaxWang_ABC
  • 2016年06月25日 06:30
  • 819

IIS中限制访问IP设置方法

IIS中限制访问IP设置方法 对于一些重要的服务器,我们并不想让所有人都能访问,或者将一些总是攻击网站的用户屏蔽掉。这就需要添加限制访问风站的IP地址了。 1、我的电脑(右键)->管理->IIS-...
  • zhangwike
  • zhangwike
  • 2015年08月03日 09:19
  • 2047

通过IIS设置阻止某个IP或IP段访问你的网站

最近笔者发现,我的一个网站每天只要一发布新文章,就被一“黑爪”立即转走了,并且大肆在其他网站转发,这样时间久了难免会造成网站内容质量的下降,甚至影响整个网站的权重,在这样的情况下,我就想阻止他访问我网...
  • oKeVin12
  • oKeVin12
  • 2015年07月10日 14:25
  • 3537

Web服务器站点设置和IIS安装设置图解

IIS是Internet Information Server的缩写,是微软提供的Internet服务器软件,包括WEB、FTP、Mail等等服务器。因为IIS的FTP和Mail服务器不是很好用,一般...
  • suxinpingtao51
  • suxinpingtao51
  • 2014年11月26日 11:12
  • 41699

windows 2008 iis7 上传大文件限制的真正解决办法

windows 2008 iis7 上传大文件限制的真正解决办法   2013-01-04 11:44:11|  分类: 学院网站|举报|字号 订阅 错误描...
  • woaizard100
  • woaizard100
  • 2014年08月14日 13:59
  • 10405

C/C++编程操作IIS7

由于IIS6与IIS7以后的编程接口更改,导致IIS6的项目无法访问IIS7,研究了几天时间,终于有些眉目,现在记录如下。 首先需要说明如下问题: 1.iis7以后的版本不再支持nntp (http:...
  • xiejianjun417
  • xiejianjun417
  • 2014年01月10日 10:17
  • 2181

window7下用IIS建站点及配置

首先我很想吐槽的是,自从用了win7,好多东西找起来真费劲!唉,还是linux好用,好直接! 一.安装IIS 1.打开控制面板--->程序--->程序和功能 进入此页面   2...
  • liuchunhui93
  • liuchunhui93
  • 2014年05月19日 21:00
  • 1726

IIS系列:二、修改默认站点配置

简介:本文主要介绍如何修改默认站点的默认文档以及如何添加新的虚拟目录和应用程序。 修改默认站点配置: 1、默认网站的配置文件存放在C:\inetpub\wwwroot目录,这里我们新建一个文本文件,写...
  • Lyu_JinBo
  • Lyu_JinBo
  • 2016年01月22日 18:06
  • 2744
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C# IIS站点限制特定的IP操作
举报原因:
原因补充:

(最多只允许输入30个字)