Minio.出于安全原因,此XML文档中禁止使用DTD



考虑将文件放入Minio:的代码

public async Task Put(byte[] data)
{
using var ms = new MemoryStream(data);
var args = new PutObjectArgs { };
args.WithBucket("buckethead");
args.WithObject(Guid.NewGuid.ToString());
args.WithStreamData(ms);
args.WithObjectSize(ms.Length);
args.WithContentType("application/vnd.ms-excel");
await _client.PutObjectAsync(args);
}

数据是ClosedXMLXLTemplate,保存为字节:

var template = new XLTemplate(@"D:DocumentsMyTemplate.xlsx");
template.AddVariable(myDto); //just a dto class with values to fill a template
template.Generate();
using var ms = new MemoryStream();
template.SaveAs(ms);
return ms.ToArray();

问题是,这条线:

await _client.PutObjectAsync(args);

以下情况失败:

{"There is an error in XML document (0, 0)."}
For security reasons DTD is prohibited in this XML document. To enable DTD processing set the DtdProcessing property on XmlReaderSettings to Parse and pass the settings into XmlReader.Create method.
at System.Xml.XmlTextReaderImpl.Throw(Exception e)
at System.Xml.XmlTextReaderImpl.ParseDoctypeDecl()
at System.Xml.XmlTextReaderImpl.ParseDocumentContent()
at System.Xml.XmlTextReaderImpl.Read()
at System.Xml.XmlReader.MoveToContent()
at Microsoft.Xml.Serialization.GeneratedAssembly.XmlSerializationReaderErrorResponse.Read3_Error()

它与序列化有什么关系?如何修复它?

顺便说一句,创建的XLTemplate是合法的,如果以.xlsx的形式保存到硬盘,我可以很好地打开它。

原来我在Minio客户端中错误地指定了端口。这个异常从来没有暗示过。孩子们,不要这样在你的图书馆里管理异常的冗长。

最新更新