我有下面的代碼片段:如何通過C#進程類來解析unc路徑?
private XDocument CreateXmlForMediaFile(string mediaFilePath)
{
var args = string.Format("-f {0} --Output=XML", mediaFilePath);
var miProcess = new Process
{
StartInfo = new ProcessStartInfo()
{
Arguments = args,
FileName = _mediaInfoPath, // path to where MediaInfo.exe is located.
RedirectStandardOutput = true,
CreateNoWindow = true,
UseShellExecute = false
}
};
// create and instantiate a new xdocument that contains our results for the current manifest.
miProcess.Start();
var newXDoc = XDocument.Load(miProcess.StandardOutput);
return newXDoc;
}
每當
mediaFilePath =本地路徑=完全成熟的XML文檔返回。
e.g C:\ TEMP \輸入\ ABC001.mp3
但
mediaFilePath = UNC路徑,某處的服務器上=返回空的XML文檔。
如\\ W2K-testharness \ SAMI TESTDATA \ CarrierBased \ ABC001.mp3
所以基本上什麼,從我可以告訴這裏發生的是,當的MediaInfo通過工藝對象在C#中推出後,沒有正確解析網絡路徑,因爲當媒體文件是本地的時候,返回一個大的xml文檔,如果這個文件不是本地的,那麼我們會得到一個空的xml文檔。
最後,我使用File.Exists(...)來驗證每個文件是否存在。
你永遠不應該通過一個不帶引號的路徑作爲參數。避免使用引號是將錯誤引入程序的好方法。如果你設法使你的程序工作而不通過這些引號,那麼考慮你自己是幸運的。 – Onkelborg 2013-02-11 14:15:10