ServiceStack:启用AuthFeature时,无法将SOAP与自定义命名空间一起使用?

时间:2013-08-10 21:13:15

标签: soap servicestack

我需要在当前的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" )]

1 个答案:

答案 0 :(得分:1)

有一个“hack”你做反转,构建服务将默认为命名空间

 http://schemas.datacontract.org/2004/07/ServiceStack

所以不要试图使用自己的命名空间,而是使用它们的命名空间。