我的编程空间,编程开发者的网络收藏夹
学习永远不晚

c# 在windows中操作IIS设置FTP服务器的示例

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

c# 在windows中操作IIS设置FTP服务器的示例

什么是FTP

FTP(File Transfer Protocol)是TCP/IP网络上两台计算机传送文件的协议,使得主机间可以共享文件.可以将 Internet 信息服务 (IIS) 配置为作为 FTP 服务器来运行。 这样,其他计算机便可以连接到服务器并将文件复制到服务器或者从服务器复制文件。 例如,如果您在自己的计算机上承载网站,并且希望允许远程用户连接到您的计算机并将他们的文件复制到服务器,则可以将 IIS 配置为充当 FTP 服务器。

主要实现方式

下面主要讲解一下,在Window的IIS中创建FTP的Site。

1、创建站点


 public int createFtpSite(string ftpname,string path){

      int errorCode = ErrorCode.Succeed;
      if (ftpname == "" && path == "")
      {
        try
        {
          ServerManager iisManager = new ServerManager();
          Configuration cfg = iisManager.GetApplicationHostConfiguration();
          
          try
          {
            
            foreach (var ftpsite in iisManager.Sites)
            {
              
              string sitename = ftpsite.Name;
              
              foreach (Binding binding in ftpsite.Bindings)
              {
                try
                {
                  string currentServerBindings = binding.GetAttributeValue("BindingInformation").ToString();
                  string port = currentServerBindings.Split(":".ToArray())[1];
                  if (port == "21")
                  {
                    try
                    {
                      //stop site
                      ftpsite.Stop();
                    }
                    catch
                    {
                      //doing nothing
                    }
                    break;
                  }
                }
                catch
                {
                  //doing nothing
                }
              }
            }
            //提交更改
            iisManager.CommitChanges();
          }
          catch
          {
            //do nothing
          }
          
          if (!System.IO.Directory.Exists(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath")))//创建站点路径
          {
            System.IO.Directory.CreateDirectory(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath"));
          }
          Site site = iisManager.Sites.Add(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp"), "ftp", string.Format("*:{0}:", "21"), System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath"));
          iisManager.CommitChanges();
          //设置FTP SSL权限
          SetFtpSSL();
          //设置FTP Everyone权限
          IISUtil.IISCore.AddSiteUtil addsiteUtil = new AddSiteUtil();
          try
          {
            string config_rootpath = System.Configuration.ConfigurationManager.AppSettings.Get("defaultftpath");
            //string rootpath = 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"));
            
            System.IO.File.SetAttributes(config_rootpath, System.IO.FileAttributes.Hidden);
          }
          catch
          {

          }
        }
        catch
        {
          errorCode = ErrorCode.ftpSiteFail;
        }
        
      }
      else
      {
        if (!getFtpState(ftpname))//判断ftp用户是否存在
        {
          
          FtpStateInit();
          try
          {
            using (ServerManager iisManager = new ServerManager())
            {
              Site site = iisManager.Sites.FirstOrDefault(o => ((string)o["name"]).Contains(System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp")));
              var vird = 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;
        }

      }
      return errorCode;
    }

2、站点列表


/// <summary>
    /// iis6获取所有ftp站点信息
    /// </summary>
    /// <param name="newsitename"></param>
    /// <returns></returns>
    public static List<string> iGetFtpInfos()
    {
      List<string> ftpinfos = new List<string>();
      try
      {
        string ftproot = System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp");
        string ftpname = "";//用户名
        string ftppass = "";//密码
        string ftppath = "";//物理路径
        string iisversion = "";//iis版本
        string majorversion = IISCore.IISInfoUtil.SGetIISMajorVersion();
        if (majorversion == "")
        {
          iisversion = "未知";
        }
        else
        {
          iisversion = majorversion.ToString();
        }
        
        var siteEntry = new DirectoryEntry("IIS://localhost/MSFTPSVC");//IIS6管理对象
        DirectoryEntry rootentry = new DirectoryEntry("IIS://localhost/W3SVC");//创建IIS管理对象
        foreach (DirectoryEntry sitechild in siteEntry.Children)
        {
          if (!sitechild.SchemaClassName.EqualsEx("IIsFtpServer"))  //IIsFtpServer代表FTP
            continue;
          string yftpname = sitechild.Properties["ServerComment"].Value.ToString();
          string defaultftpname = System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp");
          if (yftpname == defaultftpname)
          {
            try
            {
              //获取站点信息
              var root = sitechild.Children.Find("ROOT", "IIsFtpVirtualDir");
              DirectoryEntries ftps = root.Children;
              foreach (DirectoryEntry ftp in ftps)
              {
                ftpname = ftp.Name;
                
                try
                {
                  
                  foreach (DirectoryEntry child in rootentry.Children)
                  {
                    if (child.SchemaClassName == "IIsWebServer" && child.Properties["ServerComment"].Value.ToString() == ftpname)
                    {
                      ftppass = child.Properties["AnonymousUserPass"].Value.ToString();
                      
                      foreach (DirectoryEntry rootChild in child.Children)
                      {
                        string name = 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
      {
      }
      return ftpinfos;//返回数据
    }

3、删除站点


 public static bool DeleteQFtp(string ftpname)
    {
      bool flag = false;
      try{

        
        var siteEntry = new DirectoryEntry("IIS://localhost/MSFTPSVC");//IIS6管理对象
        if (ftpname != "")
        {
          foreach (DirectoryEntry sitechild in siteEntry.Children)
          {
            if (!sitechild.SchemaClassName.EqualsEx("IIsFtpServer"))  //IIsFtpServer代表FTP
              continue;
            string yftpname = sitechild.Properties["ServerComment"].Value.ToString();
            if (yftpname.ToLower() == System.Configuration.ConfigurationManager.AppSettings.Get("defaultftp").ToLower())
            {
              try
              {
                DirectoryEntry root = sitechild.Children.Find("ROOT", "IIsFtpVirtualDir");
                var ftpchild = root.Children.Find(ftpname, "IIsFtpVirtualDir");
                if (ftpchild != null)
                {
                  //删除
                  root.Children.Remove(ftpchild);
                  root.CommitChanges();
                  sitechild.CommitChanges();
                  siteEntry.CommitChanges();
                  flag = true;
                }
              }
              catch
              {
                flag = false;
              }
            }
          }
        }
      }
      catch
      {
      }
      return flag;
    }

以上就是c# 在windows中操作IIS设置FTP服务器的示例的详细内容,更多关于c# 设置FTP服务器的资料请关注编程网其它相关文章!

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

c# 在windows中操作IIS设置FTP服务器的示例

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

使用C#操作ftp服务器的示例代码

本篇文章提供了使用C#操作FTP服务器的示例代码。该代码演示了如何连接到服务器、列出目录、检索和上传文件,以及删除文件。此外,还提供了其他注意事项,包括高级功能和第三方库的使用。通过阅读这篇文章,开发者可以了解如何使用System.Net.FtpClient类与FTP服务器进行交互。
使用C#操作ftp服务器的示例代码
2024-04-02

golang在windows中设置环境变量的操作示例

小编给大家分享一下golang在windows中设置环境变量的操作示例,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!golang的优点golang是一种编译语言,可以将代码编译为机器代码,编译后的二进制文件可以直接部署到目
2023-06-14

怎么在WINDOWS中设置IIS服务器权限

怎么在WINDOWS中设置IIS服务器权限?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。1.权限分配首先建立一个用户组IIS-USERS将客户用户分配到这个组里和IIS启动用户
2023-06-14

阿里云服务器中转设置的位置及其详细操作指南

阿里云服务器是阿里巴巴集团提供的一种云服务器服务,它为用户提供了一种便捷、安全、高效的云计算解决方案。本文将详细介绍阿里云服务器中转设置的位置以及详细操作指南。阿里云服务器中转设置的位置:阿里云服务器的中转设置一般位于服务器的系统设置中,操作步骤如下:登录阿里云服务器,打开服务器的控制台。在控制台的左侧菜单栏中,
阿里云服务器中转设置的位置及其详细操作指南
2023-11-01

WordPress在IIS服务器上的伪静态设置方法(解决中文URL无法访问问题)

我们都知道WordPrewww.cppcns.comss程序很强大www.cppcns.com,对搜索引擎优化很友好,但是有一点可能有些人还不是很清楚,对于WordPress这样一款开源程序来 说,它本身就是在linux/Apache平台中
2022-06-12

如何在麒麟操作系统上进行网络服务器的设置和管理

在麒麟操作系统上进行网络服务器的设置和管理,可以按照以下步骤进行:1. 首先,确保你已经安装了麒麟操作系统,并且已经连接到互联网。2. 打开终端或控制台,以便进行命令行操作。3. 安装所需的服务器软件。麒麟操作系统提供了常见的服务器软件包,
2023-10-12

编程热搜

目录