【问题标题】:How to return XmlDocument as a response from a ServiceStack API如何从 ServiceStack API 返回 XmlDocument 作为响应
【发布时间】:2018-04-26 12:15:51
【问题描述】:

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

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

以下是我的响应对象。

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

目前我在 ResponseXML 中获得了空节点,我希望在其中接收正确的 XmlDocument,当服务在 SOAP 中时它用于返回。

有人可以帮忙吗?

谢谢

【问题讨论】:

    标签: .net xml soap servicestack xmldocument


    【解决方案1】:

    您可以在您的服务中返回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();
        }
    });
    

    【讨论】:

    • ,感谢您的回复。是的,我们目前只返回字符串。但是为此,我们需要在我们使用的第三方工具中添加一些额外的步骤来将字符串转换为 XmlDocument。我在想是否可以返回 XmlDocument 对象本身。
    • 感谢@mythz 提供详细解答
    猜你喜欢
    • 2019-03-16
    • 2011-09-30
    • 2020-12-19
    • 2017-09-13
    • 1970-01-01
    • 2018-10-11
    • 1970-01-01
    • 2019-02-21
    • 1970-01-01
    相关资源
    最近更新 更多