2

リモートのファイルとフォルダーの参照を許可する wcf サービスをホストする Windows サービスがあります。Windows サービスは、ローカル システム アカウントで実行されます。

ドライブを参照するとc:\、サービスはそのフォルダー内に 2800 を超えるファイルを報告します。私はコードを 1 ステップ実行しましたが、実際に 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;
    }
}
4

2 に答える 2

1

私が渡したパスは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;
    }
}

ありがとうダモ

于 2013-01-13T15:29:59.050 に答える
1

これを C# コンソール アプリケーションに貼り付けて、出力される内容を確認します。folder_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();
于 2013-01-08T21:43:48.090 に答える