源码:
public class MyRLC { public static string songPath = HttpRuntime.AppDomainAppPath.ToString(); public string infile, outfile; public void Ys() { System.Diagnostics.Process process = new System.Diagnostics.Process(); process.StartInfo = new System.Diagnostics.ProcessStartInfo(songPath + "SealCLRYS.exe", "/1 /2"); process.StartInfo.UseShellExecute = false; process.StartInfo.RedirectStandardInput = true; process.StartInfo.RedirectStandardOutput = true; process.StartInfo.CreateNoWindow = false; process.StartInfo.WindowStyle = ProcessWindowStyle.Hidden; process.Start(); process.StandardInput.WriteLine(infile); process.StandardInput.WriteLine(outfile); string mes4 = process.StandardOutput.ReadLine().ToString(); process.WaitForExit(); process.Close(); } }
网站发布之后
mes4就报错,说是未将对象引用到实例。求解决
其实就是调用了一个外部的exe文件,未发布不报错
发布之后就报错
string mes4 = process.StandardOutput.ReadLine().ToString();
为null
未将对象引用到实例
这种错误都是查看
.前面的对象是否为空null
比如你这儿
process.StandardOutput.ReadLine() 这个为空,tostring就错了。
process为空也是错。
process.StandardOutput为空也是错。
所以要么Try Catch,
要么你就得
if (process != null)
{
do something;
}
具体到你这个问题,貌似是Writeline以后,Cursor在EndofFile,
所以你Readline就悲剧了,返回null。
@xp就是我: 可是我不懂技术啊,只会指桑骂槐的。
好吧,很悲剧的事情,因为调用的是C++的exe程序,结果里面有一个malloc写错了,超出字符限制的时候,就成了null了。唉
建议在服务器命令行下运行这个exe文件试试
碰到空引用这种典型异常,记录日志是你最好的帮手。
string mes4 = process.StandardOutput.ReadLine().ToString();将.ToString()去掉试试。