• C#在IIS中创建站点和虚拟目录(源码下载)


    首先需要引用
    using System.DirectoryServices;
    以下为创建IIS站点和虚拟目录的主要类代码(全部源码下载)< p>


    /// <summary>
    /// 获取新网站ID
    /// </summary>
    /// <returns></returns>

    private string GetNewWebSiteID()
    {
        
    int iWebSiteCount = 0;

        DirectoryEntry siteEntry 
    = new DirectoryEntry("IIS://localhost/w3svc");

        
    foreach (DirectoryEntry childEntry in siteEntry.Children)
        
    {
            
    if (childEntry.SchemaClassName == "IIsWebServer") iWebSiteCount++;
        }


        
    return (iWebSiteCount + 1).ToString();
    }

    /// <summary>
    /// 获取新站点端口,默认为当前最大端口号加一
    /// </summary>
    /// <returns></returns>

    private string GetNewSitePort()
    {
        
    int iDefault = 8000;

        DirectoryEntry siteEntry 
    = new DirectoryEntry("IIS://localhost/w3svc");

        
    foreach (DirectoryEntry childEntry in siteEntry.Children)
        
    {
            
    if (childEntry.SchemaClassName == "IIsWebServer")
            
    {
                
    if (childEntry.Properties["ServerBindings"].Value != null)
                
    {
                    
    string strSettings = childEntry.Properties["ServerBindings"].Value.ToString();

                    
    int iSettingPort = int.Parse(strSettings.Substring(strSettings.IndexOf(':'+ 1, (strSettings.LastIndexOf(':'- strSettings.IndexOf(':'- 1)));

                    iDefault 
    = iSettingPort > iDefault ? iSettingPort : iDefault;
                }

            }

        }


        
    return (iDefault + 1).ToString();
    }

    /// <summary>
    /// 判断网站是否已经存在
    /// </summary>
    /// <param name="strSiteName"></param>
    /// <returns></returns>

    private bool IsExist(string strSiteName)
    {
        
    bool blExist = false;

        DirectoryEntry siteEntry 
    = new DirectoryEntry("IIS://localhost/w3svc");

        
    foreach (DirectoryEntry childEntry in siteEntry.Children)
        
    {
            
    if (childEntry.SchemaClassName == "IIsWebServer")
            
    {
                
    if (childEntry.Properties["ServerComment"].Value != null)
                
    {
                    
    if (childEntry.Properties["ServerComment"].Value.ToString() == strSiteName) blExist = true;
                }

            }

        }


        
    return blExist;
    }

    /// <summary>
    /// 创建网站
    /// </summary>
    /// <param name="strPort"></param>
    /// <param name="strSiteName"></param>
    /// <param name="strFilePath"></param>
    /// <returns></returns>

    private DirectoryEntry CreateNewSite(string strSiteName, string strFilePath)
    {
        
    try
        
    {
            strSitePort 
    = GetNewSitePort();

            DirectoryEntry deyRoot 
    = new DirectoryEntry("IIS://localhost/w3svc");

            DirectoryEntry siteEntry 
    = deyRoot.Children.Add(GetNewWebSiteID(), "IIsWebServer");

            siteEntry.Properties[
    "ServerComment"].Value = strSiteName;

            siteEntry.Properties[
    "ServerBindings"].Value = String.Format("{0}:{1}:{2}""", strSitePort, "");

            siteEntry.Properties[
    "ServerAutoStart"].Value = true;

            
    //添加虚拟目录,网站本身没有路径,默认的路径即名称为Root的虚拟目录
            DirectoryEntry rootEntry = siteEntry.Children.Add("Root""IIsWebVirtualDir");
            rootEntry.Properties[
    "Path"].Value = strFilePath;                       //文件夹路径
            rootEntry.Properties["AccessRead"][0= true;                           //读取权限
            rootEntry.Properties["AccessExecute"][0= false;                       //执行(如ISAPI应用程序或CGI)
            rootEntry.Properties["AccessWrite"][0= true;                          //写入
            rootEntry.Properties["AccessScript"][0= true;                         //执行脚本(如ASP)
            rootEntry.Properties["EnableDirBrowsing"][0= true;                   //浏览
            rootEntry.Properties["DefaultDoc"][0= "UserLogin.aspx,Default.aspx";  //设置默认文档,多值情况下中间用逗号分割
            rootEntry.CommitChanges(); siteEntry.CommitChanges(); return rootEntry;
        }

        
    catch (Exception ex)
        
    {
            MessageBox.Show(ex.Message.ToString() 
    + "站点创建失败!"); return null;
        }

    }

    /// <summary>
    /// 创建虚拟目录
    /// </summary>
    /// <param name="strDirName">虚拟目录名称</param>
    /// <param name="strDirPath">虚拟目录路径</param>
    /// <param name="siteEntry">要创建虚拟目录的原站点</param>
    /// <returns></returns>

    private bool CreateVirtualDirectory(string strDirName, string strDirPath, DirectoryEntry rootEntry)
    {
        
    try
        
    {
            DirectoryEntry childEntry 
    = rootEntry.Children.Add(strDirName, "IIsWebVirtualDir");

            childEntry.Invoke(
    "AppCreate"true);
            childEntry.Properties[
    "Path"].Value = strDirPath;// @"D:\公司项目\盘县联网\SafetyProduce\SafetyNet\";        //文件夹路径
            childEntry.Properties["AppFriendlyName"][0= strDirName;//应用程序名称 
            childEntry.Properties["AccessRead"][0= true;           //读取权限
            childEntry.Properties["AccessExecute"][0= false;       //执行(如ISAPI应用程序或CGI)
            childEntry.Properties["AccessWrite"][0= true;          //写入
            childEntry.Properties["AccessScript"][0= true;         //执行脚本(如ASP)
            childEntry.Properties["EnableDirBrowsing"][0= true;   //浏览
            childEntry.Properties["DefaultDoc"][0= "UserLogin.aspx,Default.aspx"////设置默认文档,多值情况下中间用逗号分割

            childEntry.CommitChanges(); rootEntry.CommitChanges(); 
    return true;
        }

        
    catch (Exception ex)
        
    {
            MessageBox.Show(ex.Message.ToString() 
    + "虚拟目录" + strDirName + "创建失败!"); return false;
        }

    }

    以下为调用代码

    //创建站点
    DirectoryEntry rootEntry = CreateNewSite("天科行业主管平台", strDirectoryPath + "WebPage");

    if (rootEntry != null)
    {
        
    //创建虚拟目录
        CreateVirtualDirectory("SafetyNet", strDirectoryPath + "SafetyNet", rootEntry); 
        CreateVirtualDirectory(
    "SafetySupervise", strDirectoryPath + "SafetySupervise", rootEntry); 
    }

     全部源码下载

  • 相关阅读:
    HDU 1203 I NEED A OFFER!(0-1背包)
    poj3624 Charm Bracelet(0-1背包 滚动数组)
    Contest1803
    2019 Multi-University Training Contest 3
    Circle and Points
    分治算法应用-最近点对的最小距离-hdu 1007 Quoit Design
    2019年第二阶段我要变强个人训练赛第十七场
    2019牛客暑期多校训练营(第四场)
    2019牛客暑期多校训练营(第三场)
    2019 Multi-University Training Contest 2
  • 原文地址:https://www.cnblogs.com/zhangpengshou/p/1232210.html
Copyright © 2020-2023  润新知