views:

53

answers:

0

I have an application (written in c#) that allow me to set IIS to allow or deny access to a website from all ip addresses. The application works fine for IIS6 however it does not work with IIS 7 (even with IIS 6 WMI Compatibility installed).

heres the code (basically)

Type typ = this.Entry.Properties[IIsWebDirectoryProperty.IPSecurity][0].GetType();
var securityProp = this.Entry.Properties[IIsWebDirectoryProperty.IPSecurity][0];

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

this.Entry.CommitChanges();

I have checked the metabase for both IIS6 and IIS7 using the metabase explorer and the only diffecnce I can see is that the "IPSecurity" property does not appear in IIS7 until you also add a an allow or deny IP address, through IIS Manager. Whats really got me stumped is that even when I edit the feature setting to Deny access in the IIS Manager there is no change to the metabase or to the web.config in the site root! So how/where is this property being set and read from? And how can I set and read value of this property programmatically?

edit: IIS7 is installed on Windows 7