灵魂腐蚀 发表于 2015-1-16 22:32:36

ASP.NET编程:.NET中 用C#利用IIS

语言是不是不是最重要的?iisusingSystem;
usingSystem.DirectoryServices;
usingSystem.Collections;
usingSystem.Text.RegularExpressions;
usingSystem.Text;
/**
*@author吴海燕
*@emailwuhy80-usual@yahoo.com
*2004-6-25初版
*/
namespaceWuhy.ToolBox
{
///<summary>
///这个类是静态类。用来完成办理IIS的基础操纵。
///办理IIS有两种体例,一是ADSI,一是WMI。因为体系限定的缘故原由,只好选择利用ADSI完成功效。
///这是一个遗憾。只要比及只要利用IIS6的时分,才有大概利用WMI来办理体系
///不外有一个成绩就是,我如今也以为如许的一个办法在当地实行会对照的好。最好不要远程实行。
///由于那样必要占用相称数目的带宽,即便要远程实行,也是保举在统一个网段内里实行
///</summary>
publicclassIISAdminLib
{
#regionUserName,Password,HostName的界说
publicstaticstringHostName
{
get
{
returnhostName;
}
set
{
hostName=value;
}
}
publicstaticstringUserName
{
get
{
returnuserName;
}
set
{
userName=value;
}
}
publicstaticstringPassword
{
get
{
returnpassword;
}
set
{
if(UserName.Length<=1)
{
thrownewArgumentException("还没有指定好用户名。请先指定用户名");
}
password=value;
}
}
publicstaticvoidRemoteConfig(stringhostName,stringuserName,stringpassword)
{
HostName=hostName;
UserName=userName;
Password=password;
}
privatestaticstringhostName="localhost";
privatestaticstringuserName;
privatestaticstringpassword;
#endregion
#region依据路径机关Entry的办法
///<summary>
///依据是不是有效户名来判别是不是是远程服务器。
///然后再机关出分歧的DirectoryEntry出来
///</summary>
///<paramname="entPath">DirectoryEntry的路径</param>
///<returns>前往的是DirectoryEntry实例</returns>
publicstaticDirectoryEntryGetDirectoryEntry(stringentPath)
{
DirectoryEntryent;
if(UserName==null)
{
ent=newDirectoryEntry(entPath);
}
else
{
//ent=newDirectoryEntry(entPath,HostName+""+UserName,Password,AuthenticationTypes.Secure);
ent=newDirectoryEntry(entPath,UserName,Password,AuthenticationTypes.Secure);
}
returnent;
}
#endregion
#region增加,删除网站的办法
///<summary>
///创立一个新的网站。依据传过去的信息举行设置
///</summary>
///<paramname="siteInfo">存储的是新网站的信息</param>
publicstaticvoidCreateNewWebSite(NewWebSiteInfositeInfo)
{
if(!EnsureNewSiteEnavaible(siteInfo.BindString))
{
thrownewDuplicatedWebSiteException("已有了如许的网站了。"+Environment.NewLine+siteInfo.BindString);
}
stringentPath=String.Format("IIS://{0}/w3svc",HostName);
DirectoryEntryrootEntry=GetDirectoryEntry(entPath);
stringnewSiteNum=GetNewWebSiteID();
DirectoryEntrynewSiteEntry=rootEntry.Children.Add(newSiteNum,"IIsWebServer");
newSiteEntry.CommitChanges();
newSiteEntry.Properties["ServerBindings"].Value=siteInfo.BindString;
newSiteEntry.Properties["ServerComment"].Value=siteInfo.CommentOfWebSite;
newSiteEntry.CommitChanges();
DirectoryEntryvdEntry=newSiteEntry.Children.Add("root","IIsWebVirtualDir");
vdEntry.CommitChanges();
vdEntry.Properties["Path"].Value=siteInfo.WebPath;
vdEntry.CommitChanges();
}
///<summary>
///删除一个网站。依据网站称号删除。
///</summary>
///<paramname="siteName">网站称号</param>
publicstaticvoidDeleteWebSiteByName(stringsiteName)
{
stringsiteNum=GetWebSiteNum(siteName);
stringsiteEntPath=String.Format("IIS://{0}/w3svc/{1}",HostName,siteNum);
DirectoryEntrysiteEntry=GetDirectoryEntry(siteEntPath);
stringrootPath=String.Format("IIS://{0}/w3svc",HostName);
DirectoryEntryrootEntry=GetDirectoryEntry(rootPath);
rootEntry.Children.Remove(siteEntry);
rootEntry.CommitChanges();
}
#endregion
#regionStart和Stop网站的办法
publicstaticvoidStartWebSite(stringsiteName)
{
stringsiteNum=GetWebSiteNum(siteName);
stringsiteEntPath=String.Format("IIS://{0}/w3svc/{1}",HostName,siteNum);
DirectoryEntrysiteEntry=GetDirectoryEntry(siteEntPath);
siteEntry.Invoke("Start",newobject[]{});
}
publicstaticvoidStopWebSite(stringsiteName)
{
stringsiteNum=GetWebSiteNum(siteName);
stringsiteEntPath=String.Format("IIS://{0}/w3svc/{1}",HostName,siteNum);
DirectoryEntrysiteEntry=GetDirectoryEntry(siteEntPath);
siteEntry.Invoke("Stop",newobject[]{});
}
#endregion
#region确认网站是不是不异
///<summary>
///断定一个新的网站与现有的网站没有不异的。
///如许避免将不法的数据寄存到IIS内里往
///</summary>
///<paramname="bindStr">网站邦定信息</param>
///<returns>真为能够创立,假为不成以创立</returns>
publicstaticboolEnsureNewSiteEnavaible(stringbindStr)
{
stringentPath=String.Format("IIS://{0}/w3svc",HostName);
DirectoryEntryent=GetDirectoryEntry(entPath);
foreach(DirectoryEntrychildinent.Children)
{
if(child.SchemaClassName=="IIsWebServer")
{
if(child.Properties["ServerBindings"].Value!=null)
{
if(child.Properties["ServerBindings"].Value.ToString()==bindStr)
{
returnfalse;
}
}
}
}
returntrue;
}
#endregion
#region猎取一个网站编号的办法
///<summary>
///猎取一个网站的编号。依据网站的ServerBindings大概ServerComment来断定网站编号
///</summary>
///<paramname="siteName"></param>
///<returns>前往网站的编号</returns>
///<exceptioncref="NotFoundWebSiteException">暗示没有找到网站</exception>
publicstaticstringGetWebSiteNum(stringsiteName)
{
Regexregex=newRegex(siteName);
stringtmpStr;
stringentPath=String.Format("IIS://{0}/w3svc",HostName);
DirectoryEntryent=GetDirectoryEntry(entPath);
foreach(DirectoryEntrychildinent.Children)
{
if(child.SchemaClassName=="IIsWebServer")
{
if(child.Properties["ServerBindings"].Value!=null)
{
tmpStr=child.Properties["ServerBindings"].Value.ToString();
if(regex.Match(tmpStr).Success)
{
returnchild.Name;
}
}
if(child.Properties["ServerComment"].Value!=null)
{
tmpStr=child.Properties["ServerComment"].Value.ToString();
if(regex.Match(tmpStr).Success)
{
returnchild.Name;
}
}
}
}
thrownewNotFoundWebSiteException("没有找到我们想要的站点"+siteName);
}
#endregion
#region猎取新网站id的办法
///<summary>
///猎取网站体系内里可使用的最小的ID。
///这是由于每一个网站都必要有一个独一的编号,并且这个编号越小越好。
///这内里的算法经由了测试是没有成绩的。
///</summary>
///<returns>最小的id</returns>
publicstaticstringGetNewWebSiteID()
{
ArrayListlist=newArrayList();
stringtmpStr;
stringentPath=String.Format("IIS://{0}/w3svc",HostName);
DirectoryEntryent=GetDirectoryEntry(entPath);
foreach(DirectoryEntrychildinent.Children)
{
if(child.SchemaClassName=="IIsWebServer")
{
tmpStr=child.Name.ToString();
list.Add(Convert.ToInt32(tmpStr));
}
}
list.Sort();
inti=1;
foreach(intjinlist)
{
if(i==j)
{
i++;
}
}
returni.ToString();
}
#endregion
}
#region新网站信息布局体
publicstructNewWebSiteInfo
{
privatestringhostIP;//TheHostsIPAddress
privatestringportNum;//TheNewWebSitesPort.generallyis"80"
privatestringdescOfWebSite;//网站暗示。通常是网站的网站名。比方"www.dns.com.cn"
privatestringcommentOfWebSite;//网站正文。一样平常也为网站的网站名。
privatestringwebPath;//网站的主目次。比方"e:        mp"
publicNewWebSiteInfo(stringhostIP,stringportNum,stringdescOfWebSite,stringcommentOfWebSite,stringwebPath)
{
this.hostIP=hostIP;
this.portNum=portNum;
this.descOfWebSite=descOfWebSite;
this.commentOfWebSite=commentOfWebSite;
this.webPath=webPath;
}
publicstringBindString
{
get
{
returnString.Format("{0}:{1}:{2}",hostIP,portNum,descOfWebSite);
}
}
publicstringCommentOfWebSite
{
get
{
returncommentOfWebSite;
}
}
publicstringWebPath
{
get
{
returnwebPath;
}
}
}
#endregion
}
你觉得学习.NET怎么样,我懂的少,问的可能很幼稚,见笑了啊:)

山那边是海 发表于 2015-1-17 15:59:49

CGI程序在运行的时候,首先是客户向服务器上的CGI程序发送一个请求,服务器接收到客户的请求后,就会打开一个新的Process(进程)来执行CGI程序,处理客户的请求。CGI程序最后将执行的结果(HTML页面代码)传回给客户。

再现理想 发表于 2015-1-20 20:04:13

但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。

若天明 发表于 2015-1-29 19:47:59

我觉得什么语言,精通就好,你要做的就是比其他80%的人都厉害,你就能得到只有20%的人才能得到的高薪。

小魔女 发表于 2015-2-6 03:43:25

虽然在形式上JSP和ASP或PHP看上去很相似——都可以被内嵌在HTML代码中。但是,它的执行方式和ASP或PHP完全不同。在JSP被执行的时候,JSP文件被JSP解释器(JSPParser)转换成Servlet代码,然后Servlet代码被Java编译器编译成.class字节文件,这样就由生成的Servlet来对客户端应答。所以,JSP可以看做是Servlet的脚本语言(ScriptLanguage)版。

乐观 发表于 2015-2-15 11:38:11

对于中小项目来说.net技术是完全可以胜任,但为什么现在大型公司或网站都选择php或java呢?就是因为微软不够开放,没有提供从硬件到应用服务器再到业务应用的整套解决方案。

柔情似水 发表于 2015-3-4 11:30:27

微软又推出ASP.NET。这不是ASP的简单升级,而是全新一代的动态网页实现系统,用于一台WEB服务器建立强大的应用程序。是微软发展的新体系结构.NET的一部分,是ASP和.NET技术的结合。

深爱那片海 发表于 2015-3-11 19:11:27

关于ASP.NET功能上,ASP.NET比微软以前的ASP(96年出现)有更强大的library,更好的稳定性。ASP.NET可以使用.NETFramework中所有组件(也就是说.NET能实现的,ASP.NET一样能实现)。

蒙在股里 发表于 2015-3-19 09:05:15

PHP的源代码完全公开,在OpenSource意识抬头的今天,它更是这方面的中流砥柱。不断地有新的函数库加入,以及不停地更新,使得PHP无论在UNIX或是Win32的平台上都可以有更多新的功能。它提供丰富的函数,使得在程式设计方面有着更好的资源。目前PHP的最新版本为4.1.1,它可以在Win32以及UNIX/Linux等几乎所有的平台上良好工作。PHP在4.0版后使用了全新的Zend引擎,其在最佳化之后的效率,比较传统CGI或者ASP等技术有了更好的表现。

简单生活 发表于 2015-3-19 09:05:15

我的意思是.net好用,从功能上来说比JAVA强还是很明显的。

分手快乐 发表于 2015-3-27 18:09:31

大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
页: [1]
查看完整版本: ASP.NET编程:.NET中 用C#利用IIS