9

使用 WCF 3.5 和Christian Weyer 的 FlatWsdl EndpointBehavior<import> ,我能够在没有任何指令的情况下为我的 WCF 服务获取单个平面 WSDL 文件。

现在使用 WCF 4,由于某种原因,这不再起作用。

我已经尝试了很多博客条目中描述的所有内容,包括使用WcfExtras行为扩展。

他们都指的是Chr。Weyers 解决方案或推荐 WcfExtras。我还确保为绑定、ServiceContract 和 ServiceBehavior 指定了相同的命名空间。

在自定义服务宿主中,当即将注入 FlatWsdlExtension 时,Description.Endpoints 集合始终为空。我尝试使用或不使用地址配置我的服务端点,到目前为止没有运气。

我需要做什么才能为我的 WCF 4 服务获取单个平面 WSDL?

感谢您的任何回答。

4

2 回答 2

4

我遇到了这个确切的问题。今天经过几次尝试,我终于通过执行以下操作使其工作:

完整阅读这篇博文。

确保在以下位置指定完全相同的命名空间属性:ServiceContract、ServiceBehavior 和 bindingNamespace(.config->services/service/endpoint 部分)。

请注意这个问题,我曾经遇到过。

下载此 zip 文件并在项目中的某处包含 FlatWsdl/Extensions:FlatWsdl.cs、FlatWsdlServiceHost.cs 和 FlatWsdlServiceHostFactory.cs。

确保在 .svc 文件的 ServiceHost Factory 属性中为您的 FlatWsdlServiceHostFactory.cs 版本(当然减去 .cs)指定完全限定的类名。

我今天尝试了 WcfExtras 以及其他一些东西——它可能或多或少,但这些步骤最终让我走了。祝你好运!

[编辑]

于 2011-11-08T21:43:00.430 回答
2

迟到的答案,希望对某人有所帮助。

有同样的问题,通过手动将行为添加到服务端点来解决它:

   FlatWsdlServiceHost serviceHost = new FlatWsdlServiceHost(typeof(MyService));

   ServiceEndpoint endp = serviceHost.AddServiceEndpoint(typeof(IMyService), new BasicHttpBinding(), "MyService");
   endp.Behaviors.Add(new FlatWsdl());
于 2011-09-19T14:05:58.887 回答