【问题标题】:c# wcf file and folder browserc# wcf文件和文件夹浏览器
【发布时间】:2012-12-22 20:12:09
【问题描述】:

我有一个托管 wcf 服务的 Windows 服务,以允许远程文件和文件夹浏览。 windows服务在本地系统账户下运行。

浏览c:\ 驱动器时,该服务报告该文件夹中有超过 2800 个文件。 我已经单步执行了代码,它确实报告了 >2800 个文件。

这怎么可能是正确的?

C# 代码

   //Files Manager

public ReturnClass FindSubFiles(String Folder_To_Search, String User, String SessionId)
{
    ReturnClass myReturnClass = new ReturnClass(-1, String.Empty, String.Empty, null, null, null, null);
    try
    {
        Logging.Write_To_Log_File("Entry", MethodBase.GetCurrentMethod().Name, "", "", "", "", User, SessionId, 1);
        string[] filePaths = Directory.GetFiles(Folder_To_Search);
        int count = 0;
        foreach (string Folder in filePaths)
        {
            filePaths[count] = Path.GetFileName(filePaths[count]);

            count++;
        }
        myReturnClass.ErrorCode = 1;
        myReturnClass.FilePaths = filePaths;
        Logging.Write_To_Log_File("Exit", MethodBase.GetCurrentMethod().Name, "", "", "", "", User, SessionId, 1);
        return myReturnClass;
    }
    catch (Exception ex) 
    {
        Logging.Write_To_Log_File("Error", MethodBase.GetCurrentMethod().Name, "", "", ex.ToString(), "", User, SessionId, 2);
        myReturnClass.ErrorCode = -1;
        myReturnClass.ErrorMessage = ex.ToString();
        return myReturnClass;
    }
}

【问题讨论】:

  • 您是否考虑过隐藏文件或系统文件(如果有)...?
  • 是的,但是当我查看隐藏文件时,只有大约 30 个文件左右。请记住该服务在本地系统帐户下运行,它可能会看到甚至管理员都看不到的其他文件 - 我不确定...

标签: c# windows wcf filesystems file-permissions


【解决方案1】:

将其粘贴到 C# 控制台应用程序中,看看它会吐出什么。您必须在您的文件夹_To_Search 中传递了一些意想不到的东西,或者在 c:\

中的文件比您想象的要多
var Folder_To_Search = @"c:\";
string[] filePaths = Directory.GetFiles(Folder_To_Search);
int count = 0;
foreach (string Folder in filePaths)
{
    filePaths[count] = Path.GetFileName(filePaths[count]);

    count++;
}
Console.WriteLine(count);
Console.ReadKey();

【讨论】:

    【解决方案2】:

    我传入的路径是 c: 我应该传入的是 c:\\

    C# 代码

    public ReturnClass FindSubFiles(String Folder_To_Search , 
                                    String User, String SessionId )
    {
        ReturnClass myReturnClass = new ReturnClass(-1, String.Empty, String.Empty, 
                                                   null, null, null, null);
        try
        {
            Logging.Write_To_Log_File("Entry", MethodBase.GetCurrentMethod().Name, 
                                      "", "", "", "", User, SessionId, 1);
            string[] filePaths = Directory.GetFiles(Folder_To_Search + "\\");
            int count = 0;
            foreach (string Folder in filePaths)
            {
                filePaths[count] = Path.GetFileName(filePaths[count]);
    
                count++;
            }
            myReturnClass.ErrorCode = 1;
            myReturnClass.FilePaths = filePaths;
            Logging.Write_To_Log_File("Exit", MethodBase.GetCurrentMethod().Name, 
                                      "", "", "", "", User, SessionId, 1);
            return myReturnClass;
        }
        catch (Exception ex) 
        {
            Logging.Write_To_Log_File("Error", MethodBase.GetCurrentMethod().Name, 
                                      "", "", ex.ToString(), "", User, SessionId, 2);
            myReturnClass.ErrorCode = -1;
            myReturnClass.ErrorMessage = ex.ToString();
            return myReturnClass;
        }
    }
    

    谢谢 达摩

    【讨论】:

      猜你喜欢
      • 2020-12-31
      • 1970-01-01
      • 2018-01-29
      • 1970-01-01
      • 2018-09-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-03
      相关资源
      最近更新 更多