有关ADSI的问题!

sanlng 2007-07-04 11:09:01
利用ADSI建立一个站点,在IIS中是可以看到该站点,且该站点可以被访问,但利用代码却找不到这个站点.当机器重启之后,相同的代码就可以找到该站点了.高手指点:为什么在站点刚被建立之后利用代码却找不到该站点?
相关代码如下:
string siteName = GetNewSiteID() ;
object[] prams = new object[2]{"IIsWebServer",Convert.ToInt32( siteName ) } ;
DirectoryEntry site = (DirectoryEntry)directoryEntry.Invoke( "Create" , prams ) ;
site.Properties["KeyType"][0] = "IIsWebServer" ;
site.Properties["ServerComment"][0] = siteInfo.ServerComment ;
site.Properties["ServerBindings"].Add( ":" + siteInfo.ServerBindings + ":" ) ;

site.Properties["ServerState"][0] = int.Parse( siteInfo.ServerState.ToString() ) ;
site.Properties["ServerSize"][0] = 1 ;
site.Properties["AspEnableParentPaths"][0] = 1 ;
site.Properties["AspScriptLanguage"][0] = siteInfo.AspScriptLanguage.ToString() ;
site.CommitChanges() ; // 保存改变
directoryEntry.CommitChanges() ;
directoryEntry.RefreshCache() ;

DirectoryEntry root = site.Children.Add("Root","IIsWebVirtualDir") ;
root.Invoke("AppCreate",true) ; // 创建IIS应用程序
root.Properties["path"][0] = siteInfo.Path ; //虚拟目录指向的物理目录
root.Properties["EnableDirBrowsing"][0] = false ;
root.Properties["AuthAnonymous"][0] = true ;
root.Properties["AccessExecute"][0] = false ;
root.Properties["AccessRead"][0] = true ;
root.Properties["AccessWrite"][0] = false ;
root.Properties["AccessScript"][0] = true ;
root.Properties["AccessSource"][0] = false ;
root.Properties["FrontPageWeb"][0] = false ;
root.Properties["KeyType"][0] = "IIsWebVirtualDir" ;
root.Properties["AppFriendlyName"][0] ="默认应用程序" ;
root.Properties["AppIsolated"][0] = 2 ;
root.Properties["DefaultDoc"][0] = siteInfo.DefaultDoc ;
root.Properties["EnableDefaultDoc"][0] = true ;
root.CommitChanges() ;
site.CommitChanges() ;
root.RefreshCache() ;
site.RefreshCache() ;
directoryEntry.CommitChanges() ;
directoryEntry.RefreshCache() ;
...全文
134 点赞 收藏 10
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
whycom 2008-08-05
建立站点后
Process.Start("net stop W3svc");
process.start("net start W3svc");

获取站点

回复
wapit 2008-08-05
我记得我的是可以找到的. 暂时没发现你代码哪有问题了.

可能是不能立即找到吧.
回复
wapit 2008-08-05
给我算了.
回复
sanlng 2008-08-04
把分该给谁?
回复
sanlng 2007-07-05
高手们都那里去了
回复
sanlng 2007-07-04
解决这问题可以这样做:
在<authentication mode="Windows" /> 节点下添加以下内容
<identity impersonate="true" userName="administrator" password="sanlng"/>
"administrator"与"sanlng"分别是管理员帐户与密码.
回复
手机APP开发 2007-07-04
我遇到了另外一个关于ADSI的问题
在本地所有工作都能完成,但传到服务器上以后就出错误,提示拒绝访问
directoryEntry
找了一些资料说没有权限,我把ASPNET加到ADMINISTRATORS组里也不行,请问如何解决?
回复
sanlng 2007-07-04
directoryEntry 代码根IIS,GetNewSiteID()方法来返回未被分配的最小的网站编号
回复
sanlng 2007-07-04
上面是建立站点的代码,这里是查找一个站点的方法
public bool ExistsSite( string siteName )
{
if ( directoryEntry == null || siteName == String.Empty )
{
return false ;
}

bool bExists = false;

try
{
foreach ( DirectoryEntry child in directoryEntry.Children )
{
if( child.SchemaClassName == "IIsWebServer" )
{
if( child.Properties["ServerComment"].Value != null )
{
if ( child.Properties["ServerComment"].Value.ToString() == siteName )
{
bExists = true;

break;
}
}
}
}
}
catch
{
throw;
}

return bExists;
}
回复
sanlng 2007-07-04
高手们都那里去了?
回复
相关推荐
发帖
.NET技术社区
创建于2007-09-28

5.8w+

社区成员

.NET技术交流专区
申请成为版主
帖子事件
创建了帖子
2007-07-04 11:09
社区公告
暂无公告