如何 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();
}
});
我们有一些从外部工具调用的 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();
}
});