培训网站源码,做烘培的网站有哪些,开发一个手机app成本费用,电子商务网站提供的主要功能有目的是在Winform程序里面#xff0c;可以直接启动一个HTTP服务端#xff0c;给下游客户连接使用。
查找相关技术#xff0c;有两种方法#xff1a;
1.使用C#动态添加网站应用到IIS中#xff0c;借用IIS的站群软件管理能力来提供HTTP接口。本文即对此做说明
2.在Winform…目的是在Winform程序里面可以直接启动一个HTTP服务端给下游客户连接使用。
查找相关技术有两种方法
1.使用C#动态添加网站应用到IIS中借用IIS的站群软件管理能力来提供HTTP接口。本文即对此做说明
2.在Winform程序中实现Web服务器逻辑自己监听和管理客户端请求
利用IIS7自带类库管理IIS现在变的更强大更方便而完全可以不需要用DirecotryEntry这个类了(乐博网中很多.net管理iis6.0的文章都用到了DirecotryEntry这个类 )Microsoft.Web.Administration.dll位于IIS的目录%WinDir%\\System32\\InetSrv下使用时需要引用它基本上可以管理IIS7的各项配置。
这里只举几个例子说明一下基本功能更多功能请参考MSDN。
建立站点
string SiteName乐博网; //站点名称 string BindArgs*:80:; //绑定参数注意格式 string aplhttp; //类型 string pathe:\\乐博网; //网站路径 ServerManager sm new ServerManager(); sm.Sites.Add(SiteName,apl,BindArgs,path); sm.CommitChanges();
修改站点
Site sitesm.Sites[newsite]; site.NameSiteName; site.Bindings[0].EndPoint.Port9999; site.Applications[0].VirtualDirectories[0].PhysicalPathpath; sm.CommitChanges();
删除站点
Site sitesm.Sites[乐博网];
sm.Sites.Remove(site);
sm.CommitChanges();
站点操作
#region CreateWebsite 添加网站 public string CreateWebSite(string serverID, string serverComment, string defaultVrootPath, string HostName, string IP, string Port) { try { ManagementObject oW3SVC new ManagementObject (_scope, new ManagementPath(IIsWebServiceW3SVC), null); if (IsWebSiteExists (serverID)) { return Site Already Exists...; } ManagementBaseObject inputParameters oW3SVC.GetMethodParameters (CreateNewSite); ManagementBaseObject[] serverBinding new ManagementBaseObject[1]; serverBinding[0] CreateServerBinding(HostName, IP, Port); inputParameters[ServerComment] serverComment; inputParameters[ServerBindings] serverBinding; inputParameters[PathOfRootVirtualDir] defaultVrootPath; inputParameters[ServerId] serverID; ManagementBaseObject outParameter null; outParameter oW3SVC.InvokeMethod(CreateNewSite, inputParameters, null); // 启动网站 string serverName W3SVC/ serverID; ManagementObject webSite new ManagementObject(_scope, new ManagementPath(IIsWebServer serverName ), null); webSite.InvokeMethod(Start, null); return (string)outParameter.Properties[ReturnValue].Value; } catch (Exception ex) { return ex.Message; } } public ManagementObject CreateServerBinding(string HostName, string IP, string Port) { try { ManagementClass classBinding new ManagementClass(_scope, new ManagementPath(ServerBinding), null); ManagementObject serverBinding classBinding.CreateInstance(); serverBinding.Properties[Hostname].Value HostName; serverBinding.Properties[IP].Value IP; serverBinding.Properties[Port].Value Port; serverBinding.Put(); return serverBinding; } catch { return null; } } #endregion #region 添加网站事件 protected void AddWebsite_Click(object sender, EventArgs e) { IISManager iis new IISManager(); iis.Connect(); string serverID 5556; string serverComment Create Website; string defaultVrootPath D:\web; string HostName World; string IP ; string Port 9898; ReturnMessage.Text iis.CreateWebSite(serverID,serverComment,defaultVrootPath,HostName,IP,Port); } #endregion #region DeleteSite 删除站点 public string DeleteSite(string serverID) { try { string serverName W3SVC/ serverID; ManagementObject webSite new ManagementObject(_scope, new ManagementPath(IIsWebServer serverName ), null); webSite.InvokeMethod(Stop, null); webSite.Delete(); webSite null; return Delete the site succesfully!; } catch (Exception deleteEx) { return deleteEx.Message; } } #endregion
方法二
using System; using System.Collections.Generic; using System.Text; using System.DirectoryServices; namespace WindowsApplication1 { class IISManager { public IISManager() { } public static string VirDirSchemaName IIsWebVirtualDir; private string _serverName; public string ServerName { get { return _serverName; } set { _serverName value; } } /// summary /// 创建網站或虚拟目录 /// /summary /// param nameWebSite服务器站点名称(localhost)/param /// param nameVDirName虚拟目录名称/param /// param namePath實際路徑/param /// param nameRootDirtrue網站;false虛擬目錄/param /// param nameiAuth设置目录的安全性0不允许匿名访问1为允许,2基本身份验证3允许匿名基本身份验证4整合Windows驗證,5允许匿名整合Windows驗證...更多請查閱MSDN/param /// param namewebSiteNum1/param /// param nameserverName一般為localhost/param /// returns/returns public bool CreateWebSite(string WebSite, string VDirName, string Path, bool RootDir, int iAuth, int webSiteNum, string serverName) { try { System.DirectoryServices.DirectoryEntry IISSchema; System.DirectoryServices.DirectoryEntry IISAdmin; System.DirectoryServices.DirectoryEntry VDir; bool IISUnderNT; // // 确定IIS版本 // IISSchema new System.DirectoryServices.DirectoryEntry(IIS:// serverName /Schema/AppIsolated); if (IISSchema.Properties[Syntax].Value.ToString().ToUpper() BOOLEAN) IISUnderNT true; else IISUnderNT false; IISSchema.Dispose(); // // Get the admin object // 获得管理权限 // IISAdmin new System.DirectoryServices.DirectoryEntry(IIS:// serverName /W3SVC/ webSiteNum /Root); // // If were not creating a root directory // 如果我们不能创建一个根目录 // if (!RootDir) { // // If the virtual directory already exists then delete it // 如果虚拟目录已经存在则删除 // foreach (System.DirectoryServices.DirectoryEntry v in IISAdmin.Children) { if (v.Name VDirName) { // Delete the specified virtual directory if it already exists try { IISAdmin.Invoke(Delete, new string[] { v.SchemaClassName, VDirName }); IISAdmin.CommitChanges(); } catch (Exception ex) { throw ex; } } } } // // Create the virtual directory // 创建一个虚拟目录 // if (!RootDir) { VDir IISAdmin.Children.Add(VDirName, IIsWebVirtualDir); } else { VDir IISAdmin; } // // Make it a web application // 创建一个web应用 // if (IISUnderNT) { VDir.Invoke(AppCreate, false); } else { VDir.Invoke(AppCreate, true); } // // Setup the VDir // 安装虚拟目录 //AppFriendlyName,propertyName,, bool chkRead,bool chkWrite, bool chkExecute, bool chkScript,, true, false, false, true VDir.Properties[AppFriendlyName][0] VDirName; //应用程序名称 VDir.Properties[AccessRead][0] true; //设置读取权限 VDir.Properties[AccessExecute][0] false; VDir.Properties[AccessWrite][0] false; VDir.Properties[AccessScript][0] true; //执行权限[純腳本] //VDir.Properties[AuthNTLM][0] chkAuth; VDir.Properties[EnableDefaultDoc][0] true; VDir.Properties[EnableDirBrowsing][0] false; VDir.Properties[DefaultDoc][0] Default.aspx,Index.aspx,Index.asp; //设置默认文档,多值情况下中间用逗号分割 VDir.Properties[Path][0] Path; VDir.Properties[AuthFlags][0] iAuth; // // NT doesnt support this property // NT格式不支持这特性 // if (!IISUnderNT) { VDir.Properties[AspEnableParentPaths][0] true; } // // Set the changes // 设置改变 // VDir.CommitChanges(); return true; } catch (Exception ex) { throw ex; } } /// summary /// 獲取VDir支持的所有屬性 /// /summary /// returns/returns public string GetVDirPropertyName() { //System.DirectoryServices.DirectoryEntry VDir; const String constIISWebSiteRoot IIS://localhost/W3SVC/1/ROOT/iKaoo; DirectoryEntry root new DirectoryEntry(constIISWebSiteRoot); string sOut ; //下面的方法是得到所有属性名称的方法 foreach (PropertyValueCollection pvc in root.Properties) { //Console.WriteLine(pvc.PropertyName); sOut pvc.PropertyName : pvc.Value.ToString() -----------; } return sOut; } /// summary /// 創建虛擬目錄 /// /summary /// param namesDirName虛擬目錄程式名稱/param /// param namesPath實體路徑/param /// param namesDefaultDoc黙認首頁,多個名稱用逗號分隔/param /// param nameiAuthFlags设置目录的安全性0不允许匿名访问1为允许,2基本身份验证3允许匿名基本身份验证4整合Windows驗證,5允许匿名整合Windows驗證...更多請查閱MSDN/param /// param namesWebSiteNumberWin2K,2K3支持多個網站,本次操作哪個網站,黙認網站為1/param /// returns/returns public bool CreateVDir(string sDirName, string sPath, string sDefaultDoc, int iAuthFlags, string sWebSiteNumber) { try { String sIISWebSiteRoot IIS://localhost/W3SVC/ sWebSiteNumber /ROOT; DirectoryEntry root new DirectoryEntry(sIISWebSiteRoot); foreach (System.DirectoryServices.DirectoryEntry v in root.Children) { if (v.Name sDirName) { // Delete the specified virtual directory if it already exists root.Invoke(Delete, new string[] { v.SchemaClassName, sDirName }); root.CommitChanges(); } } DirectoryEntry tbEntry root.Children.Add(sDirName, root.SchemaClassName); tbEntry.Properties[Path][0] sPath; tbEntry.Invoke(AppCreate, true); //tbEntry.Properties[AccessRead][0] true; //tbEntry.Properties[ContentIndexed][0] true; tbEntry.Properties[DefaultDoc][0] sDefaultDoc; tbEntry.Properties[AppFriendlyName][0] sDirName; //tbEntry.Properties[AccessScript][0] true; //tbEntry.Properties[DontLog][0] true; //tbEntry.Properties[AuthFlags][0] 0; tbEntry.Properties[AuthFlags][0] iAuthFlags; tbEntry.CommitChanges(); return true; } catch (Exception ex) { throw ex; } } }
} 调用DEMO private void button1_Click(object sender, EventArgs e) { if (new IISManager().CreateWebSite(localhost, Vtest, E:\\DOC, false, 1, 1, localhost)) lbInfo.Text Create Vtest OK; } private void button2_Click(object sender, EventArgs e) { txtPN.Text new IISManager().GetVDirPropertyName(); } private void button3_Click(object sender, EventArgs e) { if (new IISManager().CreateVDir(iKaoo, E:\\DOC, index.aspx,Default.aspx, 1, 1)) lbInfo.Text Create iKaoo OK; }