我们正在使用一些从外部工具调用的ServiceStack API。这个工具需要输入" XmlDocument"类型,并没有规定编写代码将字符串转换为该工具中的XmlDocument。
问题是早些时候我们有SOAP服务返回XmlDocument并且该工具运行良好。但是,最近我们将所有这些服务转换为ServiceStack,从那时起我们就无法获得正确的XmlDocument响应。它总是返回空节点。 我相信这不是直截了当的,而且介于两者之间的东西也没有了。
以下是我的回复对象。
public class RequisitionImportResponse : ResultResponse
{
public XmlDocument ResponseXML { get; set; }
}
目前我在ResponseXML中获取空节点,我希望在那里接收适当的XmlDocument,当服务在SOAP中时,它用于返回。
有人可以在这里帮忙吗?
由于
答案 0 :(得分:2)
您可以在服务中返回string
,例如:
public class RequisitionImport : IReturn<string> { ... }
public class XmlServices : Service
{
[AddHeader(ContentType=MimeTypes.Xml)]
public object Any(RequisitionImport request)
{
XmlDocument xmlDoc = ...;
return xmlDoc.OuterXml;
}
}
或者您可以允许服务返回XmlDocument
:
public class XmlServices : Service
{
public object Any(RequisitionImport request)
{
XmlDocument xmlDoc = ...;
return xmlDoc;
}
}
如果您配置Response Filter以检查XmlDocument
并将其写入回复,例如:
GlobalResponseFiltersAsync.Add(async (req, res, dto) => {
if (dto is XmlDocument doc) {
res.ContentType = MimeTypes.Xml;
await res.WriteAsync(doc.OuterXml);
res.EndRequest();
}
});