• 对虚拟目录的操作


    之前做站点发布的时候,有用到对虚拟目录的操作,今天抽时间整理了一下,大概如下:
    一、查看虚拟目录是否存在
    private bool IsExitesVirtualDir(string virtualdirname)
    {
       bool exited =false;
       DirectoryEntry _entry = new DirectoryEntry("IIS://localhost/W3SVC/1/Root");
       DirectoryEntries _entries = _entry.Children;
       foreach(DirectoryEntry _cen in _entries)
       {
        if(_cen.Name == virtualdirname)
         exited = true;
       }
       return exited;
    }
    其中virtualdirpath指要建立的虚拟目录名称;

    二、新增虚拟目录
    private void CreateVirtualDir(string virtualdirname,string logicDir)
    {
       if(IsExitesVirtualDir(virtualdirname))
            DeleteVirtualDir(virtualdirname);

       DirectoryEntry _rootEntry ;
       _rootEntry = new DirectoryEntry("IIS://localhost/W3SVC/1/root");
       DirectoryEntry _newVirDir;
       _newVirDir = _rootEntry .Children.Add(virtualdirpath,"IIsWebVirtualDir");
       _newVirDir.Invoke("AppCreate",true);
       _newVirDir.CommitChanges();
       _rootEntry .CommitChanges();

       _newVirDir.Properties["AnonymousPasswordSync"][0] = true;
       _newVirDir.Properties["Path"][0] = logicDir + @"virtualdirentry\virtualname\";
       _newVirDir.CommitChanges();
    }
    _newVirDir.Properties["Path"][0] 的值为虚拟目录对应的物理地址;

    三、更新虚拟目录
    public void Update(string virtualdirname)
    {
       //判断需要更改的虚拟目录是否存在
       if(_IsExitesVirtualDir(virtualdirname))
       {
        DirectoryEntry _rootEntry ;
        _rootEntry = new DirectoryEntry("IIS://localhost/W3SVC/1/root");
        DirectoryEntry ode = _rootEntry.Children.Find(virtualdirname,"IIsWebVirtualDir");
        UpdateDirInfo(ode);
       }
    }
    private void UpdateDirInfo(DirectoryEntry de)
    {
       de.Properties["AnonymousUserName"][0] = AnonymousUserName;
       de.Properties["AnonymousUserPass"][0] = AnonymousUserPass;
       de.Properties["AccessRead"][0] = boolen;
       de.Properties["AccessExecute"][0] = boolen;
       de.Properties["AccessWrite"][0] = boolen;
       de.Properties["AuthBasic"][0] = boolen;
       de.Properties["AuthNTLM"][0] = boolen;
       de.Properties["ContentIndexed"][0] = boolen;
       de.Properties["EnableDefaultDoc"][0] = boolen;
       de.Properties["EnableDirBrowsing"][0] = boolen;
       de.Properties["AccessSSL"][0] = boolen;
       de.Properties["AccessScript"][0] = boolen;
       de.Properties["DefaultDoc"][0] = DefaultDoc;
       de.Properties["Path"][0] = Path;
       de.CommitChanges();
    }

    四、删除虚拟目录
    private void DeleteVirtualDir(string virtualdirname)
    {
       DirectoryEntry _rootEntry ;
       _rootEntry = new DirectoryEntry("IIS://localhost/W3SVC/1/root");
       object[] paras = new object[2];
       paras[0] = "IIsVirtualDir";
       paras[1] = virtualdirname;
       _rootEntry .Invoke("Delete",paras);
       _rootEntry .CommitChanges();
    }

  • 相关阅读:
    javascript获得浏览器工作区域的大小
    javascript禁止输入数字
    Extjs之遍历Store内的数据
    Extjs之rowEditing编辑状态时列不对齐
    Extjs中numberfield小数位数设置
    【转】vscode常用快捷键整理
    【转】如何提高WEB的性能?
    【转】echarts 使用示例
    uni-app页面配置和跳转
    【转】.NetCore如何将特性和依赖注入有效结合
  • 原文地址:https://www.cnblogs.com/zhuor/p/316697.html
Copyright © 2020-2023  润新知