我正在使用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服务,现在流程无法等待结束...