我们目前正在使用ServiceStack作为我们的web api,这是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。
感谢任何帮助。
答案 0 :(得分: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; }
}
我的元数据中的可见性受到适当限制: