c# 在windows中操作IIS设置FTP服务器的示例
什么是FTP
FTP(FileTransferProtocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以将Internet信息服务(IIS)配置为作为FTP服务器来运行。 这样,其他计算机便可以连接到服务器并将文件复制到服务器或者从服务器复制文件。 例如,如果您在自己的计算机上承载网站,并且希望允许远程用户连接到您的计算机并将他们的文件复制到服务器,则可以将IIS配置为充当FTP服务器。
主要实现方式
下面主要讲解一下,在Window的IIS中创建FTP的Site。
1、创建站点
publicintcreateFtpSite(stringftpname,stringpath){
interrorCode=ErrorCode.Succeed;
if(ftpname==""&&path=="")
{
try
{
ServerManageriisManager=newServerManager();
Configurationcfg=iisManager.GetApplicationHostConfiguration();
/*----停止21端口----*/
try
{
/*----sites----*/
foreach(varftpsiteiniisManager.Sites)
{
/*
*站点描述
*/
stringsitename=ftpsite.Name;
/*
*站点绑定域名和端口
*/
foreach(Bindingbindinginftpsite.Bindings)
{
try
{
stringcurrentServerBindings=binding.GetAttributeValue("BindingInformation").ToString();
stringport=currentServerBindings.Split(":".ToArray())[1];
if(port=="21")
{
try
{
//stopsite
ftpsite.Stop();
}
catch
{
//doingnothing
}
break;
}
}
catch
{
//doingnothing
}
}
}
//提交更改
iisManager.CommitChanges();
}
catch
{
//donothing
}
/*
*创建FTP
*/
if(!System.IO.Directory.Exists(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath")))//创建站点路径
{
System.IO.Directory.CreateDirectory(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath"));
}
Sitesite=iisManager.Sites.Add(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp"),"ftp",string.Format("*:{0}:","21"),System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath"));
iisManager.CommitChanges();
//设置FTPSSL权限
SetFtpSSL();
//设置FTPEveryone权限
IISUtil.IISCore.AddSiteUtiladdsiteUtil=newAddSiteUtil();
try
{
stringconfig_rootpath=System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath");
//stringrootpath=path.Substring(0,path.IndexOf(ftpname)-1)+"\\ftproot";
if(!System.IO.Directory.Exists(config_rootpath))
{
System.IO.Directory.CreateDirectory(config_rootpath);
}
addsiteUtil.icaclsSet("Everyone",System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath"));
/*----hide----*/
System.IO.File.SetAttributes(config_rootpath,System.IO.FileAttributes.Hidden);
}
catch
{
}
}
catch
{
errorCode=ErrorCode.ftpSiteFail;
}
}
else
{
if(!getFtpState(ftpname))//判断ftp用户是否存在
{
/*----FTP状态检查----*/
FtpStateInit();
try
{
using(ServerManageriisManager=newServerManager())
{
Sitesite=iisManager.Sites.FirstOrDefault(o=>((string)o["name"]).Contains(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp")));
varvird=site.Applications[0].VirtualDirectories["/"+ftpname];
if(vird==null){site.Applications[0].VirtualDirectories.Add("/"+ftpname,path);}
else{errorCode=ErrorCode.ftpExists;}
iisManager.CommitChanges();
//添加FTP访问权限
SetFtpAccess(ftpname);
}
}
catch
{
errorCode=ErrorCode.ftpSiteFail;
}
}
else
{
errorCode=ErrorCode.ftpExists;
}
}
returnerrorCode;
}
2、站点列表
//////iis6获取所有ftp站点信息 /// ////// publicstaticList iGetFtpInfos() { List ftpinfos=newList (); try { stringftproot=System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp"); stringftpname="";//用户名 stringftppass="";//密码 stringftppath="";//物理路径 stringiisversion="";//iis版本 stringmajorversion=IISCore.IISInfoUtil.SGetIISMajorVersion(); if(majorversion=="") { iisversion="未知"; } else { iisversion=majorversion.ToString(); } /* *创建FTP子站点 */ varsiteEntry=newDirectoryEntry("IIS://localhost/MSFTPSVC");//IIS6管理对象 DirectoryEntryrootentry=newDirectoryEntry("IIS://localhost/W3SVC");//创建IIS管理对象 foreach(DirectoryEntrysitechildinsiteEntry.Children) { if(!sitechild.SchemaClassName.EqualsEx("IIsFtpServer"))//IIsFtpServer代表FTP continue; stringyftpname=sitechild.Properties["ServerComment"].Value.ToString(); stringdefaultftpname=System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp"); if(yftpname==defaultftpname) { try { //获取站点信息 varroot=sitechild.Children.Find("ROOT","IIsFtpVirtualDir"); DirectoryEntriesftps=root.Children; foreach(DirectoryEntryftpinftps) { ftpname=ftp.Name; /* *获取密码 */ try { /* *循环站点获取站点信息 */ foreach(DirectoryEntrychildinrootentry.Children) { if(child.SchemaClassName=="IIsWebServer"&&child.Properties["ServerComment"].Value.ToString()==ftpname) { ftppass=child.Properties["AnonymousUserPass"].Value.ToString(); /* *获取站点目录 */ foreach(DirectoryEntryrootChildinchild.Children) { stringname=rootChild.Name.ToString(); if((rootChild.SchemaClassName=="IIsWebVirtualDir")&&(rootChild.Name.ToString().ToLower()=="root")) { if(rootChild.Properties["Path"].Value==null) { ftppath=""; } else { ftppath=rootChild.Properties["Path"].Value.ToString().Substring(0,rootChild.Properties["Path"].Value.ToString().LastIndexOf("\\")); } } } } } } catch { } /* *获取路径 */ if(ftpname!="") ftpinfos.Add(ftproot+"-@-"+ftpname+"-@-"+ftppass+"-@-"+ftppath+"-@-"+iisversion);//添加到站点信息 } } catch { } } } } catch { } returnftpinfos;//返回数据 }
3、删除站点
publicstaticboolDeleteQFtp(stringftpname)
{
boolflag=false;
try{
/*
*删除FTP子站点
*/
varsiteEntry=newDirectoryEntry("IIS://localhost/MSFTPSVC");//IIS6管理对象
if(ftpname!="")
{
foreach(DirectoryEntrysitechildinsiteEntry.Children)
{
if(!sitechild.SchemaClassName.EqualsEx("IIsFtpServer"))//IIsFtpServer代表FTP
continue;
stringyftpname=sitechild.Properties["ServerComment"].Value.ToString();
if(yftpname.ToLower()==System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp").ToLower())
{
try
{
DirectoryEntryroot=sitechild.Children.Find("ROOT","IIsFtpVirtualDir");
varftpchild=root.Children.Find(ftpname,"IIsFtpVirtualDir");
if(ftpchild!=null)
{
//删除
root.Children.Remove(ftpchild);
root.CommitChanges();
sitechild.CommitChanges();
siteEntry.CommitChanges();
flag=true;
}
}
catch
{
flag=false;
}
}
}
}
}
catch
{
}
returnflag;
}
以上就是c#在windows中操作IIS设置FTP服务器的示例的详细内容,更多关于c#设置FTP服务器的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
热门推荐
10 过节文案成语祝福语简短
11 回国了祝福语简短英语
12 初升高祝福语家长简短
13 身体康复的祝福语简短
14 老爸生日暴富祝福语简短
15 买房的祝福语高级简短
16 打牌翻盘祝福语简短
17 玫瑰礼盒祝福语大全简短
18 赠礼贺卡祝福语简短英文