如何为使用ServiceStack开发的服务的API指定“namespace”和“conformsto”属性?

时间:2018-03-23 05:23:38

标签: c# .net servicestack asmx servicestack.redis

我们目前正在将旧的Web服务(asmx)转换为使用ServiceStack平台开发的REST API层。

存在一些具有在asmx中指定的命名空间和Binding ConformsTo属性的Web服务。以下是一个这样的例子:

[WebService(Namespace = "http://ourcustomsite.com/externalServices")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

我们如何在ServiceStack对应项中设置它们?

1 个答案:

答案 0 :(得分:0)

如果您指的是ServiceStack的SOAP Support,它只支持使用.NET DataContract属性更改命名空间,这些属性应该为您的DTO(也称为ServiceModels)所在的每个命名空间指定,例如:

[assembly: ContractNamespace("http://ourcustomsite.com/externalServices",
           ClrNamespace = "MyApp.ServiceModel.Operations")]
[assembly: ContractNamespace("http://ourcustomsite.com/externalServices",
           ClrNamespace = "MyApp.ServiceModel.Types")]

您还需要在以下位置指定自定义命名空间:

SetConfig(new HostConfig {
    WsdlServiceNamespace = "http://ourcustomsite.com/externalServices",
});

ServiceStack的SOAP绑定不可自定义,并且不能用于符合现有SOAP Service的配置文件。 SOAP客户端需要使用/soap11/soap12 WSDL来生成WCF服务引用客户端,甚至更好地使用通用Soap12ServiceClient,它可以使用您的Services现有类型的DTO而不是WSDL生成的代理。

为新项目避免使用SOAP

SOAP的使用应该是considered legacy,并且仅限于强制使用它们的情况。 Add ServiceStack Reference与ServiceStack的generic C#/.NET Service Clients一起提供了很多faster, simpler, versatile and resilient替代SOAP,可以在number of different C#/.NET Clientsnumber of different languages中使用,并且应该是首选的解决方案用法是一种选择。