关于设置IIS目录的属性问题
文件系统有这样这样的目录结构
c:\aaaa
|---zpp
|----zz
在IIS中,c:\aaaa作为一个虚拟站点。
由于需要,首先设置zz的某个属性,再设置zpp的相同属性。
相当于从子到父的顺序,如果从父到子则不会出错。
此时汇报错,0x80005006,属性不被支持。
原因:
设置了zz后,zz的SchemaClass是IIsWebDirectory,而zpp的是IIsObject。
所以会报出如上的错误。
解决:/Files/hilite/SetIISFolderProperty.zip
c:\aaaa
|---zpp
|----zz
在IIS中,c:\aaaa作为一个虚拟站点。
由于需要,首先设置zz的某个属性,再设置zpp的相同属性。
相当于从子到父的顺序,如果从父到子则不会出错。
此时汇报错,0x80005006,属性不被支持。
原因:
设置了zz后,zz的SchemaClass是IIsWebDirectory,而zpp的是IIsObject。
所以会报出如上的错误。
解决:/Files/hilite/SetIISFolderProperty.zip
1 public static void SetDirectoryAnonymousUser1( string virSite, string path, string userName, string userPwd )
2 {
3 string fullPath = virSite + "/" + path;
4
5 DirectoryEntry de = new DirectoryEntry(fullPath);
6
18
19 again:
20 try
21 {
22
23 de.Properties["AnonymousUserName"][0] = userName;
24 de.Properties["AnonymousUserPass"][0] = userPwd;
25 de.CommitChanges();
26 }
27 catch ( System.Runtime.InteropServices.COMException err )
28 {
29
30 if ( err.ErrorCode == -2147024893 )
31 {
32 //上面错误是因为,没有meta对象,可以明确创建。
33
34 DirectoryEntry pDE = new DirectoryEntry(virSite);
35 de = pDE.Children.Add(path, "IIsWebDirectory");
36 pDE.CommitChanges();
37
38 goto again;
39 }
40 if ( (err.ErrorCode == -2147463162) && (de.Properties["KeyType"].Value.ToString() == "") )
41 {
42 de.Properties["KeyType"].Value = "IIsWebDirectory";
43 de.CommitChanges();
44 de.Close();
45 de.RefreshCache();
46 //de = new DirectoryEntry(fullPath);
47 goto again;
48 }
49
50
51 throw err;
52 }
53 }
2 {
3 string fullPath = virSite + "/" + path;
4
5 DirectoryEntry de = new DirectoryEntry(fullPath);
6
18
19 again:
20 try
21 {
22
23 de.Properties["AnonymousUserName"][0] = userName;
24 de.Properties["AnonymousUserPass"][0] = userPwd;
25 de.CommitChanges();
26 }
27 catch ( System.Runtime.InteropServices.COMException err )
28 {
29
30 if ( err.ErrorCode == -2147024893 )
31 {
32 //上面错误是因为,没有meta对象,可以明确创建。
33
34 DirectoryEntry pDE = new DirectoryEntry(virSite);
35 de = pDE.Children.Add(path, "IIsWebDirectory");
36 pDE.CommitChanges();
37
38 goto again;
39 }
40 if ( (err.ErrorCode == -2147463162) && (de.Properties["KeyType"].Value.ToString() == "") )
41 {
42 de.Properties["KeyType"].Value = "IIsWebDirectory";
43 de.CommitChanges();
44 de.Close();
45 de.RefreshCache();
46 //de = new DirectoryEntry(fullPath);
47 goto again;
48 }
49
50
51 throw err;
52 }
53 }