【问题标题】:Console.WriteLine is blankConsole.WriteLine 为空白
【发布时间】:2017-12-18 23:57:18
【问题描述】:

我有一个奇怪的问题。我编写了一个在Windows Server 2008 R2 上运行的.net 2.0 控制台应用程序,它处理通过args 传入的文件当我手动运行它并传入一个文件时,我没有得到输出。没有。没有任何错误或异常。事件日志清晰。我希望我能从 exe 中得到一些输出。我的catch 声明中还有一个Console.WriteLine。但同样,没有任何输出。任何想法为什么?

    using System;
using System.Collections.Generic;
//using System.Linq;
using System.Text;
using System.IO;

namespace RTDXCentralFileTransmit
{
    class Program
    {
        static void Main(string[] args)
        {

            try
            {
                if (args.Length < 1)
                {
                    Console.WriteLine("File name is required");
                    logit("File name is required");
                    return;
                }
                string filename = args[0];

                Console.WriteLine("Now doing " + filename);
                logit("Now doing " + filename);

                if (!File.Exists(filename))
                {
                    Console.WriteLine("File " + filename + " does not exists.  Exiting.");
                    logit("File " + filename + " does not exists.  Exiting.");
                    File.WriteAllText("Error.txt", "File " + filename + " does not exists.  Exiting.");
                    return;
                }

                string fileplain = File.ReadAllText(filename);
                string file64 = EncodeTo64(fileplain);

                if (string.IsNullOrEmpty(file64))
                {
                    Console.WriteLine("File " + filename + " is empty.  Exiting");
                    logit("File " + filename + " is empty.  Exiting");
                    File.WriteAllText("Error.txt", "File " + filename + " is empty.  Exiting");
                    return;
                }

                FileInfo fi = new FileInfo(filename);

                com.xxxxxxxxxxxxxxxxxx.api.Dispatch dis = new com.xxxxxxxxxxxxxxxx.api.Dispatch();
                com.xxxxxxxxxxxx.api.FunnelResult fr = dis.Funnel(file64, fi.Name);

                if (fr.Success)
                {
                    Console.WriteLine("Success! " + fr.Result);
                    logit("Success!  Response from the server: " + fr.Result);
                    File.WriteAllText("Success.txt", fr.Result);
                    return;
                } else
                {
                    Console.WriteLine("Failed!! " + fr.Result);
                    logit("Failed!! " + fr.Result);
                    File.WriteAllText("Error.txt", "Transmission Failed! " + fr.Result);
                }
                logit("Exiting for " + filename);
                Environment.Exit(0);

            } catch (Exception e)
            {
                Console.WriteLine("Error. " + e.ToString());
                return;
            }

        }

        static void logit (string s)
        {
            File.AppendAllText("FileTransmit.log",DateTime.Now.ToString() + ":" + s + Environment.NewLine);
        }

        static public string EncodeTo64(string toEncode)
        {
            byte[] toEncodeAsBytes
                  = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
            string returnValue
                  = System.Convert.ToBase64String(toEncodeAsBytes);
            return returnValue;
        }
    }
}

【问题讨论】:

  • 我看到了一个try - 这里是否有一个catch 正在吞噬一个异常? logit 是什么?
  • 发布一个显示行为的最小、完整、可验证的示例。或者,更好的是,在调试器中单步执行程序。这应该很快就会发现错误。
  • @MarcGravell 我不得不说传入的一些文件在大小方面很大。但不确定这与 Console.WriteLine 不打印任何内容有什么关系。注册表(或某处)中是否有某些东西会限制 .net 可以处理的文件的大小?输入文件是一个纯文本文件,我在将其发布到远程服务器之前将其转换为 Base64。但这没关系...通过 Console.WriteLine。
  • @JimMischel 在我单步调试时在调试器中工作。当我在控制台窗口中手动运行它时,它在 /debug 目录中不起作用。
  • @Zuzlx 在 .net 中允许的最大字节 [] 或字符串略低于 2 GiB;您可以处理比这更大的文件,但如果您尝试一次读取它们,则不能。但是由于您没有显示任何 file read 代码...

标签: c# .net console


【解决方案1】:

我找到了。问题出在椅子和电脑之间。

我克隆的项目,即使它有大量的 Console.WriteLine,它实际上是构建为 Windows Application. 这解释了为什么我们没有输出 Console.WriteLine.

由于它是以windows application 构建的,因此控制台不会等待程序完成。它立即返回 - 这完全让我看不到这么多 console.writelines。但是,该程序仍在运行,并且由于文件很大,因此需要一段时间才能将其发布到远程服务器。等待一两分钟后,所有 10 MB 文件都已成功传输,如日志中所示。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-14
    • 1970-01-01
    • 2010-11-23
    • 2017-09-08
    • 2013-06-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-03
    相关资源
    最近更新 更多