2010-11-24 85 views
0

我正在使用.NET 4.0,WCF和wshttp绑定来创建一些ws方法。使用wsHttp绑定的原因是我需要支持身份验证,加密和签名。WCF,wsHttpBinding和wsp:政策

当我创建这样的服务并查看wsdl时,我看到那里有wsp:policy标记。有没有办法以某种方式影响WCF配置并删除此标签?

据我所知,可以在没有此标签的情况下进行加密和签名。

回答

2

您可以用您自己的WSDL替换生成的WSDL(serviceMetadata - externalMetadataLocation)。这是我确信你可以实现你想要的东西的唯一方法,因为你将从头开始编写WSDL。有可修改生成的WSDL和策略的扩展点 - IWsdlExportExtensionIPolicyExportExtension,但我认为您只能将新项添加到WSDL,但不能删除通过API功能(内置安全性等)添加的项目。

顺便说一句。恕我直言,删除策略是非常糟糕的主意,因为WSDL应该描述服务,并且它应该是开发人员需要创建客户端应用程序的唯一描述。如果您删除策略,您的WSDL将仅涵盖有关您的服务的部分信息,它将变得毫无用处。当然你会制动与代理生成工具的兼容性。我有关于这个话题的question

+0

嘿拉迪斯拉夫,10x的回应。唯一的原因是因为我的WS将被一些Java系统使用,这些系统可能因此标记而出现问题。我会记住你的评论,并将这个标签作为我的wsdl定义的一部分。一个相关的问题,我可以使用externalMetadataLocation属性来定义XSD定义的路径,还是仅用于wsdl? – buhtla 2010-11-24 11:23:05