使用WCF 3.5和FlatWsdl EndpointBehavior from Christian Weyer,我能够为我的WCF服务获取单个平面WSDL文件,而不需要任何<import>
指令。
现在使用WCF 4,由于某种原因,这不再起作用了。
我已经尝试了很多博客条目中描述的所有内容,包括使用WcfExtras行为扩展。
他们都是指Chr。 Weyers解决方案或推荐WcfExtras。 我还确保为绑定,ServiceContract和ServiceBehavior指定了相同的命名空间。
在自定义服务主机中,当要注入FlatWsdlExtension时,Description.Endpoints集合始终为空。我尝试使用或不使用地址配置我的服务端点,到目前为止没有运气。
为了获得WCF 4服务的单一平面WSDL,我需要做些什么?
感谢您的回答。
答案 0 :(得分:4)
我遇到了这个确切问题。经过几次尝试,我终于通过以下方式开始工作:
确保在以下内容中指定完全相同的命名空间属性:ServiceContract,ServiceBehavior和bindingNamespace(.config-&gt; services / service / endpoint section)。
请注意this problem,我曾经遇到过这个问题。
Download此zip文件,并在项目的某处包含FlatWsdl / Extensions:FlatWsdl.cs,FlatWsdlServiceHost.cs和FlatWsdlServiceHostFactory.cs。
确保在.svc文件的ServiceHost Factory属性中为您的FlatWsdlServiceHostFactory.cs版本(当然减去.cs)指定完全限定的类名。
我今天尝试过WcfExtras等等 - 可能会有更多或更少的东西,但这些步骤终于让我走了。祝你好运!
[编辑]
答案 1 :(得分:2)
迟到的答案,希望它有所帮助。
有同样的问题,通过手动将行为添加到serviceendpoint来解决它:
FlatWsdlServiceHost serviceHost = new FlatWsdlServiceHost(typeof(MyService));
ServiceEndpoint endp = serviceHost.AddServiceEndpoint(typeof(IMyService), new BasicHttpBinding(), "MyService");
endp.Behaviors.Add(new FlatWsdl());