Console.WriteLine为空
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Console.WriteLine为空相关的知识,希望对你有一定的参考价值。
我有一个奇怪的问题。我写了一个在Windows Server 2008 R2
上运行的.net 2.0控制台应用程序,它处理一个通过args
传入的文件。当我手动运行它并传入一个文件时,我没有得到输出。没有。没有错误或任何类型的例外。事件日志很清楚。我希望我从exe获得一些输出。我的Console.WriteLine
声明中也有一个catch
。但同样,没有任何输出。有什么想法吗?
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;
}
}
}
答案
我找到了。问题出在主席和电脑之间。
我克隆的项目,即使它有大量的Console.WriteLine,它实际上是被构建为Windows Application.
这解释了为什么我们没有为Console.WriteLine.
输出
由于它是作为windows application
构建的,因此控制台不会等待程序完成。它立即返回 - 这让我完全不再看到许多console.writelines。但是,程序仍在运行,并且对于大文件,将其发布到远程服务器需要一段时间。等待一两分钟后,所有10 MB文件都成功传输,因为它在日志中显示。
以上是关于Console.WriteLine为空的主要内容,如果未能解决你的问题,请参考以下文章