如何 return XmlDocument 作为来自 ServiceStack 的响应 API

How to return XmlDocument as a response from a ServiceStack API

我们有一些从外部工具调用的 ServiceStack API。此工具需要 "XmlDocument" 类型的输入,并且没有规定在该工具中编写将字符串转换为 XmlDocument 的代码。

问题是之前我们有 returning XmlDocument 的 SOAP 服务,并且该工具运行良好。但是,最近我们将所有这些服务都转换为 ServiceStack,从那时起我们就无法获得正确的 XmlDocument 响应。它总是 returns 空节点。 我相信这不是直截了当的,并且缺少介于两者之间的东西。

以下是我的回复对象

public class RequisitionImportResponse : ResultResponse
{
    public XmlDocument ResponseXML { get; set; }
}

目前我在 ResponseXML 中得到空节点,我想在其中接收正确的 XmlDocument,当服务在 SOAP 中时它被用来return。

有人可以帮忙吗?

谢谢

您可以在您的服务中 return string,例如:

public class RequisitionImport : IReturn<string> { ... }

public class XmlServices : Service
{
    [AddHeader(ContentType=MimeTypes.Xml)]
    public object Any(RequisitionImport request)
    {
        XmlDocument xmlDoc = ...;
        return xmlDoc.OuterXml;
    }
}

或者您可以允许服务 return 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();
    }
});