环境:
client: C# winform 
server: IIS website, 没有建立任何方法,客户端通过IIS自带script或功能 完成业务功能。
目前状况: 通过IIS的虚拟目录的根目录可以实现上传,下载,删除,创建等功能。
问题: 若在虚拟目录下面建立n(n>1)级目录,如何判断某级目录是否存在?或查找指定目录?
条件: 不能用try,catch来判断是否存在.请各位高手指点,感激...!!!

解决方案 »

  1.   

    自己先顶一下.
    尝试过的方法:
    在IIS上映射发布以后,肯定可以通过url在browser上访问,某级目录若存在,一定能访问到.
    于是就用 
    HttpWebRequest req = (HttpWebRequest)WebRequest.Create(uri)
    req.Method = "get";
    req.GetResponse();
    类似的方法尝试,可以成功,但是,要用try,catch来捕捉处理,不能满足要求。
    新的问题:
    访问某个url,判断它是否存在?
    最好是有什么isExists的方法.请指教...!!!期待...
      

  2.   

    另外一种方法.
    到IIS里面遍历或find.(是看到飞刀大侠的iis管理后想到的,可能理解错误。)
    于是
     DirectoryEntry dEntrys = new DirectoryEntry("IIS://localhost/W3SVC/1/Root/test");
    foreach (DirectoryEntry childrens in dEntrys.Children)
    新的问题出现
    1. dEntrys.Children.Find(...)时,找不到文件夹,只能找到文件.
    2. dEntrys.Children.SchemaFilter.Count等方法存在,但是不能访问,抛异常
    3. 遍历出来的文件和映射目录下的文件,或IIS上看到的文件不同,还是是我对此方法理解错误,
    难道这个方法是找映射列表,或什么其它的文件。
    4. dEntrys.Children.Find(...)找的是什么具体路径?比如Inetpub下面的某个文件?请指点?谢先!!!
      

  3.   

    谢谢关注,一般都是用try{}catch做?
      

  4.   

    因为不确定,肯定都得用try{}catch要不然,出错了,怎么解决,这个又没有特定函数进行连接测试,
      

  5.   

    System.ServiceProcess.ServiceController sc = new System.ServiceProcess.ServiceController(); 
                        sc.ServiceName = "DefaultAppPool"; 
                        if ((sc.Status.Equals(System.ServiceProcess.ServiceControllerStatus.Stopped)) || (sc.Status.Equals(System.ServiceProcess.ServiceControllerStatus.StopPending))) 
                        { 
                            try 
                            { 
                                sc.Start(); 
                                sc.WaitForStatus(System.ServiceProcess.ServiceControllerStatus.Running); 
                            } 
                            catch (InvalidOperationException) 
                            { 
                                Console.WriteLine("Could not start the Alerter service."); 
                            } 
                        }
    如上 
    会报这样的错 
    “无法打开计算机”.”上的DefaultAppPool服务” 
    这是怎么回事呀? 
    MSDN也是这么写的呀? 
      

  6.   

    To: Fibona用过IIS里面遍历或find吗?try{}catch在外面有,但是在里面不希望使用.
    若通过url找IP,在url没有的情况下也会出错,希望能找到更好的方法。谢谢
      

  7.   

    To : qiqundelang
    描述稍微清楚些,肯不明白.
      

  8.   

    CSDN太火了,问题太多,都没人关注小弟的!?看来是没办法交活了......
      

  9.   

      下面的代码判断是否存在c:\tempuploads\NewDirectory目录。若存在,先获取该目录下的子目录和文件,然后其移动,最后将移动后的目录删除。若不存在,则先创建该目录,然后将目录属性设为只读、隐藏
    if(File.Exists(@"c:\tempuploads\NewDirectory")) //判断目录是否存在
    {
     GetDirectory(); //获取子目录
     GetFile(); //获取文件
     MoveDirectory(); //移动目录
     DeleteDirectory(); //删除目录
    }
    else
    {
     MakeDirectory(); //生成目录
     SetDirectory(); //设置目录属性
    }下面的代码判断是否存在c:\tempuploads\newFile.txt文件。若存在,先复制该文件,然后其删除,最后将复制的文件移动;若不存在,则先创建该文件,然后打开该文件并进行写入操作,最后将文件属性设为只读、隐藏。 
    if(File.Exists(@"c:\tempuploads\newFile.txt")) //判断文件是否存在
    {
     CopyFile(); //复制文件
     DeleteFile(); //删除文件
     MoveFile(); //移动文件
    }
    else
    {
     MakeFile(); //生成文件
     OpenFile(); //打开文件
     SetFile(); //设置文件属性
      

  10.   

    TO:JACK
    这是本地操作,但是远程操作呢?
    File不能支持的.
    谢谢关注
      

  11.   

    Path 成员  
    请参见  字段  方法   
     全部折叠 全部展开    成员选项:全部显示 成员选项:已筛选  
     包括继承的成员 
     包括受保护的成员 
     仅 .NET Compact Framework 成员 对包含文件或目录路径信息的 String 实例执行操作。这些操作是以跨平台的方式执行的。msdn上有写.   System.IO.Path 类
      

  12.   

    if(File.Exists(@"c:\tempuploads\NewDirectory")) //判断目录是否存在 
    if(File.Exists(@"c:\tempuploads\newFile.txt")) //判断文件是否存在 
    这2个方法不能实现
    if(File.Exists(@"http://"))
      

  13.   

    大哥,这个难度也高了点吧,下面这个试试,
    try
    {
        HttpWebRequest request = (HttpWebRequest)WebRequest.Create(URI);
        request.Method = WebRequestMethods.Http.Head;
        request.GetResponse();
    catch (WebException ex)
    {
        if (ex.Message == 404)
        {
        do;
        }
        else
         throw ex;
        }
    }
    可能只能这样吧!有了结果告诉大家哦,爱好者的期待。
    祝你早点成功哈!
      

  14.   

    怎么没人讨论一下第二中方案,IIS里面去做文章?