我需要在我当前的 SS webapi 中托管几个 SOAP12 消息。我已经根据规则设置了所有命名空间,并且在某种程度上,一切都按预期工作。我可以使用多种工具将 SOAP 发送到服务并且它们可以工作。我已成功将它们作为服务参考添加到它们工作的 Visual Studio 项目中;至少在我添加 AuthFeature 之前。一旦我添加了 AuthFeature 或任何其他本机 SS 服务,我就无法再添加服务引用。
我的调查使我发现了 AuthService 中使用的 ServiceStack.ServiceInterface.Auth 命名空间中的 DataContract(s) 之间的命名空间差异。不过,我不希望这仅限于 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" )]