在WCF与Web服务上通过.NET Process运行.exe

时间:2018-07-06 08:00:04

标签: c# .net web-services wcf process

我正在使用WCF或Web服务从给定文件中获取元数据。

MXFDataProvider.exe是我使用Diagnostics.Process()运行的程序,它返回一些XML。 .exe不是我的,我无法调试或测试它。

 string xml = "";
 Process process = new Process();
 process.StartInfo.FileName = appSetting2 + appSetting1;
 process.StartInfo.WorkingDirectory = appSetting2;
 process.StartInfo.Arguments = "-x0 " + filename;
 process.StartInfo.CreateNoWindow = true;
 process.Start();

 xml = process.StandardOutput.ReadToEnd();
 process.WaitForExit();

问题在于,使用Web服务时,XML无法完全读取,这意味着exe会读取大多数XML ...我是通过在命令行中查看.exe来发现它的,在那里我可以看到程序在等待持续几秒钟,然后获取最后一个标签。等待的人数是相对于文件的。

<?xml version="1.0" encoding="utf-8" ?>
<MXFData>
  <OperationalPattern><![CDATA[[060e2b34]]]></OperationalPattern>
  <EssenceContainer>[060e2b34001]</EssenceContainer>
  <EssenceContainer>[060e2b34300]</EssenceContainer>
  <EssenceContainer>[060e2b30100]</EssenceContainer>
  <EssenceContainer>[060e2b30100]</EssenceContainer>
  ...

几秒钟后(〜4-6),它显示结尾:

  <FileNameUNC><![CDATA[\\filenameblablabla.MXF]]></FileNameUNC>
</MXFData>

错误必须位于此处:

 xml = process.StandardOutput.ReadToEnd();

读者认为XML已经结束并关闭流或类似的东西。因此,XML损坏了,服务失败了。

现在,奇怪的是,使用WCF,流程设法等待那几秒钟并获取最后的XML标签, 但是使用Web服务无法管理。只需提及,由于Web服务返回SOAP结果的格式,我需要创建Web服务而不是WCF。从xml ...声明和soap:envelope ...标记开始。

我确定有人知道为什么会有所不同。

有什么办法告诉流程真正等待结束吗?

预先感谢,我浪费了数周的时间才能使其与WCF一起使用,但是肥皂响应格式是错误的。有了WEB服务,现在流程无法等待结束...

0 个答案:

没有答案