LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

C#实现动态发布创建IIS站点帮助类(设置应用程序池、网站、访问端口、兼容32位等)

admin
2021年1月30日 9:27 本文热度 2901

准备工作:

1、引用 System.DirectoryServices 系统程序集

2、引用 Microsoft.Web.Administration 程序集,类库位置在 C:\Windows\System32\inetsrv\Microsoft.Web.Administration.dll ,直接拷贝到项目引用即可

3、调用方式:

string bing = string.Format("{0}:{1}:{2}", item.BingIp, item.Port, item.BingAddr); bool result = IISManager.CreateWebSite(item.SiteName, filePath, bing);

4、源码:

public class IISManager { /// <summary> /// 创建一个站点 /// </summary> /// <param name="name">站点名称</param> /// <param name="physicalPath">项目所在路径</param> /// <param name="bindingInformation">绑定信息</param> /// <param name="bindingProtocol">类型,默认http</param> /// <returns></returns> public static bool CreateWebSite(string name, string physicalPath, string bindingInformation = "*:80:", string bindingProtocol = "http") { try { ServerManager manager = new ServerManager(); //判断应用程序池是否存在 if (manager.ApplicationPools[name] != null) { manager.ApplicationPools.Remove(manager.ApplicationPools[name]); } //判断web应用程序是否存在 if (manager.Sites[name] != null) { manager.Sites.Remove(manager.Sites[name]); } manager.Sites.Add(name, bindingProtocol, bindingInformation, physicalPath); //添加web应用程序池 ApplicationPool pool = manager.ApplicationPools.Add(name); //设置web应用程序池的Framework版本 pool.ManagedRuntimeVersion = "v4.0"; //设置是否启用32位应用程序 pool.SetAttributeValue("enable32BitAppOnWin64", true); //设置web网站的应用程序池 manager.Sites[name].Applications[0].ApplicationPoolName = name; manager.CommitChanges(); return true; } catch (Exception e) { return false; } } /// <summary> /// 创建一个站点 /// </summary> /// <param name="name">站点名称</param> /// <param name="physicalPath">项目所在路径</param> /// <param name="port">端口号</param> /// <returns></returns> public static bool CreateWebSite(string name, string physicalPath, int port = 80) { try { ServerManager manager = new ServerManager(); //判断应用程序池是否存在 if (manager.ApplicationPools[name] != null) { manager.ApplicationPools.Remove(manager.ApplicationPools[name]); } //判断web应用程序是否存在 if (manager.Sites[name] != null) { manager.Sites.Remove(manager.Sites[name]); } manager.Sites.Add(name, physicalPath, port); //添加web应用程序池 ApplicationPool pool = manager.ApplicationPools.Add(name); //设置web应用程序池的Framework版本 pool.ManagedRuntimeVersion = "v4.0"; //设置是否启用32位应用程序 pool.SetAttributeValue("enable32BitAppOnWin64", true); //设置web网站的应用程序池 manager.Sites[name].Applications[0].ApplicationPoolName = name; manager.CommitChanges(); return true; } catch (Exception e) { return false; } } /// <summary> /// 创建虚拟目录 /// </summary> /// <param name="vDirName">虚拟目录名称</param> /// <param name="path">实际路径</param> /// <param name="iAuth">设置目录的安全性 0-不允许匿名访问,1-为允许,2-基本身份验证,3-允许匿名+基本身份验证,4-整合Windows验证,5-允许匿名+整合Windows验证</param> /// <param name="serverName">默认localhost</param> /// <returns></returns> public static bool CreateVirtualDirectory(string vDirName, string path, int iAuth = 1, string serverName = "localhost") { try { // 确定IIS版本   DirectoryEntry iisSchema = new DirectoryEntry("IIS://" + serverName + "/Schema/AppIsolated"); bool iisUnderNt = iisSchema.Properties["Syntax"].Value.ToString().ToUpper() == "BOOLEAN"; iisSchema.Dispose(); // 获得管理权限 DirectoryEntry iisAdmin = new DirectoryEntry("IIS://" + serverName + "/W3SVC/1/Root"); // 如果虚拟目录已经存在则删除   foreach (DirectoryEntry v in iisAdmin.Children) { if (v.Name == vDirName) { try { iisAdmin.Invoke("Delete", new object[] { v.SchemaClassName, vDirName }); iisAdmin.CommitChanges(); } catch (Exception ex) { return false; } } } // 创建一个虚拟目录 DirectoryEntry vDir = iisAdmin.Children.Add(vDirName, "IIsWebVirtualDir"); // 创建一个web应用 vDir.Invoke("AppCreate", !iisUnderNt); //应用程序名称                 vDir.Properties["AppFriendlyName"][0] = vDirName; //设置读取权限                 vDir.Properties["AccessRead"][0] = true; //值 true 表示不论文件类型是什么,文件或文件夹的内容都可以执行                 vDir.Properties["AccessExecute"][0] = false; //值 true 表示允许用户将文件及其相关属性上载到服务器上已启用的目录中,或者更改可写文件的内容。 //只有使用支持 HTTP 1.1 协议标准的 PUT 功能的浏览器,才能执行写入操作 vDir.Properties["AccessWrite"][0] = false; //值 true 表示如果是脚本文件或静态内容,则可以执行文件或文件夹的内容。值 false 只允许提供静态文件,如 HTML 文件 vDir.Properties["AccessScript"][0] = true; //设置为 true 时,浏览目录时系统会加载该目录的默认文档(由 De, faultDoc 属性指定)                 vDir.Properties["EnableDefaultDoc"][0] = true; //设置为 true 时,将启用目录浏览 vDir.Properties["EnableDirBrowsing"][0] = false; //包含一个或多个默认文档的文件名,如果在客户端的请求中不包含文件名,将把默认文档的文件名返回给客户端 vDir.Properties["DefaultDoc"][0] = "login.html,index.html,default.html,Default.aspx,index.aspx"; //项目路径                 vDir.Properties["Path"][0] = path; //作为有效方案返回给客户端的 Windows 验证方案的设置 vDir.Properties["AuthFlags"][0] = iAuth; // NT格式不支持这特性 if (!iisUnderNt) { //页面是否允许当前目录的相对路径(使用 ..\ 表示法) vDir.Properties["AspEnableParentPaths"][0] = true; } // 设置改变 vDir.CommitChanges(); return true; } catch (Exception ex) { return false; } } }

DirectoryEntry vDir = iisAdmin.Children.Add(vDirName, "IIsWebVirtualDir");


该文章在 2021/1/30 9:27:58 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2024 ClickSun All Rights Reserved