.net OpenXML更新customXMLPart

.net OpenXML更新customXMLPart,.net,openxml,openxml-sdk,.net,Openxml,Openxml Sdk,我一直在使用OOXMLAPI更新.docx中的自定义xml部分。代码将更新文档中的自定义xml部分。我的问题是,当我在控制台应用程序中使用时,相同的代码会替换并生成perfect.docx,但在ASP.NET应用程序中使用时,它既不会替换也不会生成.docx。有问题的代码片段如下所示: string tmp = string.Format("{0}.docx", Guid.NewGuid()); File.Copy(FileName, tmp); _xml =

我一直在使用OOXMLAPI更新.docx中的自定义xml部分。代码将更新文档中的自定义xml部分。我的问题是,当我在控制台应用程序中使用时,相同的代码会替换并生成perfect.docx,但在ASP.NET应用程序中使用时,它既不会替换也不会生成.docx。有问题的代码片段如下所示:

 string tmp = string.Format("{0}.docx", Guid.NewGuid());
        File.Copy(FileName, tmp);

        _xml = ReadXML(XmlPath);
        using (WordprocessingDocument wordDoc = WordprocessingDocument.Open(tmp, true)) {
            var mainPart = wordDoc.MainDocumentPart;

            mainPart.DeleteParts<CustomXmlPart>(mainPart.CustomXmlParts);

            //Add a new customXML part and then add content
            var customXmlPart = mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);

            //copy the XML into the new part...
            using (var ts = new StreamWriter(customXmlPart.GetStream())) {
                ts.Write(_xml);
                ts.Flush();
            }
        }
string tmp=string.Format(“{0}.docx”,Guid.NewGuid());
文件副本(文件名,tmp);
_xml=ReadXML(XmlPath);
使用(WordprocessingDocument wordDoc=WordprocessingDocument.Open(tmp,true)){
var mainPart=wordDoc.MainDocumentPart;
mainPart.DeleteParts(mainPart.CustomXmlParts);
//添加新的customXML部件,然后添加内容
var customXmlPart=mainPart.AddCustomXmlPart(CustomXmlPartType.CustomXml);
//将XML复制到新部件中。。。
使用(var ts=newstreamwriter(customXmlPart.GetStream())){
ts.Write(_xml);
t.Flush();
}
}
我不明白为什么会发生这种事。谢谢你的帮助
谢谢

更好的方法可能是只选择性地更新您感兴趣的XML部分

检查我对基本相同问题的回答

在console中使用相同的代码启动后,我目前正在MVC应用程序中执行此操作,因此我不确定是什么原因导致console/web之间出现问题


看起来
WordProcessingDocument.Open()
的签名也已更改,因此可能自动保存不起作用。另外,是否有可能抛出异常,而该异常不知何故被调用方吞没?也许可以使用(…){…}

将try/catch放到外部
中,您使用的是同一版本的OpenXMLSDK吗?我知道CustomXML语法的某些部分在不同版本之间发生了更改。