为什么StreamReader.ReadLine()和File.ReadAllText()返回null或为空

时间:2016-06-15 18:52:43

标签: c# .net console-application

我确实找到了一些类似的问题,但他们无法指出我正确的方向......这可能是完全愚蠢的事情,但如果有人能告诉我为什么我不能得到一个字符串填充我我很感激。这是我失败的方法:

private static string passwordTrace { get; set; }

// ... lots of other code

private static void RefreshPassword()
    {
        try
        {
            string filePath = "\\\\[server ip]\\share\\folder\\file.abcd";
            string npDecrypted;
            DateTime lastRefreshDate = Properties.Settings.Default.lastRefresh;
            if (DateTime.Now >= lastRefreshDate.AddDays(30))
            {
                using (StreamReader sr = new StreamReader(filePath))
                {
                    string npEncrypted = sr.ReadLine();
                    if (npEncrypted.Length != 24)
                    {
                        string fr = File.ReadAllText(filePath);
                        npEncrypted = fr.Substring(0, 24);
                    }

                    npDecrypted = Decryptor(npEncrypted);
                    passwordTrace = npDecrypted; // added for debugging only! remove when done.

                    secureString npSecure = new SecureString();
                    foreach (char c in npDecrypted)
                    {
                        npSecure.AppendChar(c)
                    }
                    Properties.Settings.Default.adminpw = npSecure;
                    Properties.Settings.Default.Save();
                }
            }
        }
        catch (FileNotFoundException fnfe)
        {
            // code for handling this type of exception
        }
        catch (NullReferenceException nre)
        {
            // code for handling this type of exception
        }
        catch (Exception e)
        {
            // code to catch ANY other type of exception
        }
    }

现在,VS调试器编译所有内容时没有错误或警告,并且在调试时它可以正常工作。但是,如果我复制已编译的exe(从C:\ project \ bin \ Debug目录)并运行它,则会出现问题。

通过消息框在另一个点调用passwordTrace = ...所说的点。这通过调试器运行时正常工作,并且没有任何异常抛出任何异常(我确实尝试/捕获了整个地方),但无论出于何种原因PasswordTraceProperties.Settings.Default.adminpw似乎没有在整个应用程序执行期间保持其价值。

此外,正在读取的文件是加密文本文件,始终只有1行字符,该行总是 24个字符长。一个例子是:

  

09sdjf09ausd08uf9!%38 ==

作为最后的陈述,我还将app.exe.config和app.pdb复制到我复制已编译的.exe文件的服务器目录,看看它是否与它有任何关系并且它没有修复任何东西。我也尝试直接从Debug目录运行.exe(我正在其他地方复制的文件)并且它可以正常工作。一旦我将它从本地磁盘移开它就不起作用。

所以,我怀疑它与环境工作目录有关,或者与应用程序的执行方式有关。我读过一些注意到默认用户没有设置的地方,但我认为这是专门针对ASP.NET的。如果是这种情况,并且用户双击.exe没有正确的网络身份验证,那么我该怎么办?如果它与工作目录有关,我该如何规避这个?

我会继续摆弄,如果我弄清楚,我会更新这个,但我现在迷路了!大声笑!并且最后一次 - 它一直正常工作,直到将其复制到服务器位置。

提前致谢! :)

0 个答案:

没有答案