当前位置首页 > IIS知识

利用C#创建IIS站点并设置.NETFramework版本为ASP.NET2.0的方法

阅读次数:290 次  来源:admin  发布时间:

/// <summary>

/// 本方法创建一个站点(当然,创建虚拟目录也完全没有任何问题,做法类似),并设置IIS中ASP.NET版本为2.0

/// </summary>

/// <param name="sender"></param>

/// <param name="e"></param>

rivate void button1_Click(object sender, EventArgs e)

{

//站点名称和物理路径

String webSiteName = "mengxianhui"

String pathToRoot = @"c:"mengxianhui"

DirectoryEntry root = new DirectoryEntry("IIS://localhost/W3SVC");// Find unused ID value for new web site

int siteID = 1

//得到现有的站点标识

foreach (DirectoryEntry entry in root.Children)

{

if (entry.SchemaClassName == "IIsWebServer")

{

int ID = Convert.ToInt32(entry.Name)

if (ID >= siteID)

{

iteID = ID + 1

}

}

}

//利用配置文件的做法创建站点,需要先停止原来的服务,以便能够顺利写入数据

label1.Text = "正在停止服务……"

Application.DoEvents()

System.ServiceProcess.ServiceController mobServiceController3 = new System.ServiceProcess.ServiceController("IISAdmin")

foreach (System.ServiceProcess.ServiceController dependentService in mobServiceController3.DependentServices)

{

witch (dependentService.Status)

{

case ServiceControllerStatus.Stopped:

reak

case ServiceControllerStatus.StopPending:

dependentService.WaitForStatus(ServiceControllerStatus.Stopped)

reak

default:

dependentService.Stop()

dependentService.WaitForStatus(ServiceControllerStatus.Stopped)

reak

}

}

if (mobServiceController3.Status != ServiceControllerStatus.Stopped)

{

mobServiceController3.Stop()

mobServiceController3.WaitForStatus(ServiceControllerStatus.Stopped)

}

//确保服务完全停止

label1.Text = "停止服务完成!"

Application.DoEvents()

String ConfigPath = System.Environment.SystemDirectory + @""inetsrv"MetaBase.xml"

System.Xml.XmlDocument doc = new System.Xml.XmlDocument()

doc.Load(ConfigPath)

System.Xml.XmlNamespaceManager xnm = new System.Xml.XmlNamespaceManager(doc.NameTable)

xnm.AddNamespace("mxh", "urn:microsoft-catalog:XML_Metabase_V64_0")

//得到最大的网站的标识,要在其后面加入节点

tring SiteLocation = "/LM/W3SVC/" + (siteID - 1)

System.Xml.XmlNode LastWebServer = doc.SelectSingleNode("/mxh:configuration/mxh:MBProperty/mxh:IIsWebVirtualDir[@Location='" + SiteLocation + "/root']", xnm)

if (LastWebServer == null)

{

MessageBox.Show("没有现有的 Web 服务器。")

doc = null

retur

}

//找到AdminACL设置,每次都是变化的 -_-!

System.Xml.XmlNode LastWebServerFilter = doc.SelectSingleNode("/mxh:configuration/mxh:MBProperty/mxh:IIsFilters[@Location='" + SiteLocation + "/filters']/@AdminACL", xnm)

if (LastWebServer == null)

{

MessageBox.Show("没有现有的 Web 服务器 filters。")

doc = null

retur

}

String LastWebServerFilterAdminAcl = LastWebServerFilter.Value

//创建新站点

label1.Text = "创建新站点……"

Application.DoEvents()

String NewSiteID = "/LM/W3SVC/" + siteID.ToString()

System.Xml.XmlNode NewWebServer = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsWebServer", "urn:microsoft-catalog:XML_Metabase_V64_0")

System.Xml.XmlAttribute NewWebServerLocation = doc.CreateAttribute("Location")

NewWebServerLocation.Value = NewSiteID

NewWebServer.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AuthFlags")

NewWebServerLocation.Value = "0"

NewWebServer.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("ServerAutoStart")

NewWebServerLocation.Value = "TRUE"

NewWebServer.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("ServerBindings")

NewWebServerLocation.Value = ":802:"

NewWebServer.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("ServerComment")

NewWebServerLocation.Value = webSiteName

NewWebServer.Attributes.Append(NewWebServerLocation)

LastWebServer.ParentNode.InsertAfter(NewWebServer, LastWebServer)

System.Xml.XmlNode NewWebServerFilter = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsFilters", "urn:microsoft-catalog:XML_Metabase_V64_0")

NewWebServerLocation = doc.CreateAttribute("Location")

NewWebServerLocation.Value = NewSiteID + "/filters"

NewWebServerFilter.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AdminACL")

NewWebServerLocation.Value = LastWebServerFilterAdminAcl

NewWebServerFilter.Attributes.Append(NewWebServerLocation)

NewWebServer.ParentNode.InsertAfter(NewWebServerFilter, NewWebServer)

System.Xml.XmlNode IIsWebVirtualDir = doc.CreateNode(System.Xml.XmlNodeType.Element, "", "IIsWebVirtualDir", "urn:microsoft-catalog:XML_Metabase_V64_0")

NewWebServerLocation = doc.CreateAttribute("Location")

NewWebServerLocation.Value = NewSiteID + "/root"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AccessFlags")

NewWebServerLocation.Value = "AccessRead | AccessScript"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AppFriendlyName")

NewWebServerLocation.Value = "默认应用程序"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AppIsolated")

NewWebServerLocation.Value = "2"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AppRoot")

NewWebServerLocation.Value = NewSiteID + "/Root"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("AuthFlags")

NewWebServerLocation.Value = "AuthAnonymous | AuthNTLM"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

//关于权限,可以任意组合

NewWebServerLocation = doc.CreateAttribute("DirBrowseFlags")

NewWebServerLocation.Value = "DirBrowseShowDate | DirBrowseShowTime | DirBrowseShowSize | DirBrowseShowExtension | DirBrowseShowLongDate | EnableDefaultDoc"

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerLocation = doc.CreateAttribute("Path")

NewWebServerLocation.Value = pathToRoot

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

//为安全起见,下面的系统文件夹需要使用程序的方法获取,如System.Environment.SystemDirectory,和 System.Runtime.InteropServices.RuntimeEnvironment.GetRuntimeDirectory()

//这里为了简单期间,直接写入

tring ScriptMaps = @".asp,C:"WINDOWS"system32"inetsrv"asp.dll,5,GET,HEAD,POST,TRACE

.cer,C:"WINDOWS"system32"inetsrv"asp.dll,5,GET,HEAD,POST,TRACE

.cdx,C:"WINDOWS"system32"inetsrv"asp.dll,5,GET,HEAD,POST,TRACE

.asa,C:"WINDOWS"system32"inetsrv"asp.dll,5,GET,HEAD,POST,TRACE

.idc,C:"WINDOWS"system32"inetsrv"httpodbc.dll,5,GET,POST

.shtm,C:"WINDOWS"system32"inetsrv"ssinc.dll,5,GET,POST

.shtml,C:"WINDOWS"system32"inetsrv"ssinc.dll,5,GET,POST

.stm,C:"WINDOWS"system32"inetsrv"ssinc.dll,5,GET,POST

.asax,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.ascx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.ashx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.asmx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.aspx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.axd,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.vsdisco,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.rem,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.soap,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.config,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.cs,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.csproj,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.vb,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.vbproj,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.webinfo,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.licx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.resx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.resources,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.xoml,C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.rules,C:"WINDOWS"Microsoft.NET"Framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.master,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.skin,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.compiled,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.browser,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.mdb,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.jsl,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.vjsproj,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.sitemap,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.msgx,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.ad,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.dd,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.ldd,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.sd,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.cd,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.adprototype,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.lddprototype,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.sdm,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.sdmDocument,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.ldb,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.svc,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,1,GET,HEAD,POST,DEBUG

.mdf,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.ldf,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.java,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.exclude,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG

.refresh,c:"windows"microsoft.net"framework"v2.0.50727"aspnet_isapi.dll,5,GET,HEAD,POST,DEBUG"

NewWebServerLocation = doc.CreateAttribute("ScriptMaps")

NewWebServerLocation.Value = ScriptMa

IIsWebVirtualDir.Attributes.Append(NewWebServerLocation)

NewWebServerFilter.ParentNode.InsertAfter(IIsWebVirtualDir, NewWebServerFilter)

doc.Save(ConfigPath)

doc = null

label1.Text = "创建站点完成!"

mobServiceController3 = null

mobServiceController3 = new System.ServiceProcess.ServiceController("w3svc")

mobServiceController3.Start()

mobServiceController3.WaitForStatus(ServiceControllerStatus.Running)

mobServiceController3 = null

label1.Text = "恭喜你,全部工作完成!"

MessageBox.Show("恭喜你,全部工作完成!")

}

上一篇:linux服务器keras深度学习环境搭建
下一篇:IIS问题之我见