c#Word Online文件的OpenXML错误:不支持绝对URI

时间:2017-05-04 13:01:50

标签: c# ms-word uri openxml

我目前正在使用OpenXml.Wordprocessing来处理使用Word Online创建的docx文件。 使用Word保存的docx文件(不在线)我对该命令没有任何问题:

using (var wdDocument = WordprocessingDocument.Open(fileName, true))

如果我使用相同的docx文件但使用Word Online保存,则会出现以下错误: targetUri参数名称:不支持绝对URI

使用调试器运行一些测试我注意到有问题的URI可能是word / document.xml,但我不知道我可以通过哪种方式修复这些问题。

这里的堆栈跟踪:

“在System.IO.Packaging.PackUriHelper.ResolvePartUri(System.Uri sourcePartUri,System.Uri targetUri)[0x0001a] / private / tmp / source-mono-2017-02 / bockbuild-2017-02 /profiles/mono-mac-xamarin/build-root/mono-x86/mcs/class/WindowsBase/System.IO.Packaging/PackUriHelper.cs:195 \ n在DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.LoadReferencedPartsAndRelationships(DocumentFormat.OpenXml) .Packaging.OpenXmlPackage openXmlPackage,DocumentFormat.OpenXml.Packaging.OpenXmlPart sourcePart,DocumentFormat.OpenXml.Packaging.RelationshipCollection relationshipCollection,System.Collections.Generic.Dictionary 2[TKey,TValue] loadedParts) [0x00098] in <4ab5d094c38a4200ae0a70753476e093>:0 \n at DocumentFormat.OpenXml.Packaging.OpenXmlPart.Load (DocumentFormat.OpenXml.Packaging.OpenXmlPackage openXmlPackage, DocumentFormat.OpenXml.Packaging.OpenXmlPart parent, System.Uri uriTarget, System.String id, System.Collections.Generic.Dictionary 2 [TKey,TValue] loadedParts)[0x000fc] in&lt; DocumentFormat.OpenXml.Packaging.OpenXmlPartContainer.LoadReferencedPartsAndRelationships(DocumentFormat.OpenXml.Packaging.OpenXmlPackage openXmlPackage,DocumentFormat.OpenXml.Packaging.OpenXmlPart sourcePart,DocumentFormat.OpenXml.Packaging.RelationshipCollection relationshipColl)4ab5d094c38a4200ae0a70753476e093&gt;:0 \ n ection,System.Collections.Generic.Dictionary`2 [TKey,TValue] loadedParts)[0x0016e] in&lt; 4ab5d094c38a4200ae0a70753476e093&gt;:0 \ n在DocumentFormat.OpenXml.Packaging.OpenXmlPackage.Load()[0x000f5] in&lt; 4ab5d094c38a4200ae0a70753476e093&gt; :0:n在DocumentFormat.OpenXml.Packaging.OpenXmlPackage.OpenCore(System.String path,System.Boolean readWriteMode)[0x0004d] in&lt; 4ab5d094c38a4200ae0a70753476e093&gt;:0 \ n在DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(System。字符串路径,System.Boolean isEditable,DocumentFormat.OpenXml.Packaging.OpenSettings openSettings)[0x000a6]在&lt; 4ab5d094c38a4200ae0a70753476e093&gt;中:0 \ n在DocumentFormat.OpenXml.Packaging.WordprocessingDocument.Open(System.String path,System.Boolean isEditable) &lt; 4ab5d094c38a4200ae0a70753476e093&gt;中的[0x00007]:0 \ n

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

好的,经过几次调试后,这似乎是单声道本身的问题。 这是一个关于Uri包实现的漏洞。 使用环境变量 MONO_URI_DOTNETRELATIVEORABSOLUTE = true mono app.exe ,问题已解决,http://www.mono-project.com/docs/faq/known-issues/urikind-relativeorabsolute/