我需要在当前的SS webapi中托管几条SOAP12消息。我已根据规则设置了所有命名空间,并且在某种程度上一切都按预期工作。我可以使用多个工具将SOAP发送到服务并且它们可以工作。我已成功将它们作为服务引用添加到它们工作的Visual Studio项目中;至少在我添加AuthFeature之前。只要添加AuthFeature或任何其他本机SS服务,我就无法再添加服务引用。
我的调查让我了解了AuthService中使用的ServiceStack.ServiceInterface.Auth命名空间中的DataContract之间的命名空间差异。我不希望这仅限于AuthService,当添加SwaggerFeature并设置Resources服务时,这同样适用。
必须在SOAP中提供这两个消息,并且客户端必须能够将它们添加为服务引用以使用它们。
我的问题:有没有办法为本机SS服务设置DataContract命名空间,以便保持其命名空间与我们的DataContract命名空间一致?我理解我“可以”编译和维护我自己的SS版本,在那里我可以更改导致问题的那些的ContractNamespace属性,但这会导致维护中的大量撤消痛苦,特别是在尝试保持SS更新时原始来源。
我意识到属性([DataContract])基本上是编译时常量,当编译ServiceStack时,命名空间正在设置中。我正在寻找任何替代方案......
取自我的AppHost:
SetConfig( new EndpointHostConfig
{
MetadataTypesConfig = new ServiceStack.Common.ServiceModel.MetadataTypesConfig(
addDefaultXmlNamespace: Namespaces.Services.NS_2013_01 ),
WsdlServiceNamespace = Namespaces.Services.NS_2013_01,
WsdlSoapActionNamespace = Namespaces.Services.NS_2013_01,
//WsdlServiceTypesNamespace
} );
取自我的AssemblyInfo:
[assembly: ContractNamespace( "Foo", ClrNamespace = "MvcApplication1.ServiceInterface" )]
答案 0 :(得分:1)
有一个“hack”你做反转,构建服务将默认为命名空间
http://schemas.datacontract.org/2004/07/ServiceStack
所以不要试图使用自己的命名空间,而是使用它们的命名空间。