1

我们目前正在为我们的 Web api 使用 ServiceStack,它是 99% 的 REST/JSON,但是我们有一条新消息需要允许 SOAP 端点。(客户端是较旧的 BizTalk 服务器,并且需要 SOAP 12。)我们希望在除此消息之外的所有其他内容上阻止 SOAP。有没有办法在单个消息或服务上启用 SOAP 功能?可以指定 SOAP 的范围是什么?

在我们的 AppHost Configure() 中,我们删除了我们想要禁止使用的功能,EnableFeatures = Feature.All.Remove( Feature.Csv | Feature.Html | Feature.Jsv | Feature.Soap )但是这消除了我们公开 SOAP12 WSDL 的能力。另一方面,不删除Feature.Soap会为我们需要阻止的所有 POST 消息启用 SOAP。

任何帮助表示赞赏。

4

1 回答 1

1

我找到了我的问题的答案。ServiceStack 提供了一种方法来指定哪些端点通道可用以及对谁使用ServiceStack.ServiceHost.RestrictAttribute( https://github.com/ServiceStack/ServiceStack/wiki/Security )。为了将我的消息的可见性限制为仅 SOAP12:

//Request DTO
[DataContract(Namespace = Namespaces.Messages.NS_2013_01 )]
[Restrict(EndpointAttributes.Soap12 )]
public class Hello
{
    public string Name { get; set; }
}

我的元数据中的可见性受到适当限制: 在此处输入图像描述

于 2013-08-06T05:34:01.103 回答