有关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() ;
...全文
197 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
高手们都那里去了?

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧