由于 DuplexBinding,WCF 服务引用生成一个空的 reference.cs
Posted
技术标签:
【中文标题】由于 DuplexBinding,WCF 服务引用生成一个空的 reference.cs【英文标题】:WCF Service Reference generates an empty reference.cs due to DuplexBinding 【发布时间】:2012-03-02 17:31:25 【问题描述】:我有 WCF 服务。这是配置
<basicHttpBinding>
<binding name="EmergencyRegistratorBinding">
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Windows" />
</security>
</binding>
</basicHttpBinding>
及服务配置
<service behaviorConfiguration="Default" name="Breeze.AppServer.Emergencies.EmergencyRegistrator">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration="EmergencyRegistratorBinding"
contract="Services.IEmergencyRegistrator" />
</service>
一切正常。但我需要将 basicHttpBingind 更改为 DuplexBinding。 我添加了扩展名:
<extensions>
<bindingElementExtensions>
<add name="pollingDuplex" type="System.ServiceModel.Configuration.PollingDuplexElement, System.ServiceModel.PollingDuplex"/>
</bindingElementExtensions>
</extensions>
并将上述行更改为:
<customBinding>
<binding name="DuplexmergencyRegistratorBinding">
<binaryMessageEncoding/>
<pollingDuplex maxPendingSessions="2147483647" maxPendingMessagesPerSession="2147483647" inactivityTimeout="02:00:00" serverPollTimeout="00:05:00"/>
<httpTransport authenticationScheme="Negotiate"/>
</binding>
</customBinding>
和
<service behaviorConfiguration="Default" name="Breeze.AppServer.Emergencies.EmergencyRegistrator">
<endpoint address="" binding="customBinding" bindingConfiguration="DuplexmergencyRegistratorBinding" contract="Breeze.Core.Services.IEmergencyRegistrator" />
<endpoint address="mex" binding="customBinding" bindingConfiguration="DuplexmergencyRegistratorBinding" contract="IMetadataExchange"/>
</service>
我已将服务引用添加到 WCF 项目。引用已成功添加,但 Reference.cs 几乎为空。
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.225
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
当我取消选中“在引用的程序集中重用类型”选项时 代码已生成,但超过 10000 行而不是 ~500
我运行 svcutil,然后我得到了下一个:
svcutil.exe http://localhost/Breeze.Workstation/Emergencies/EmergencyRegistrator.svc?wsdl
尝试使用 WS-Metadata Exchange 或 DISCO 从“http://localhost/Breeze.Workstation/Emergencies/EmergencyRegistrator.svc?wsdl”下载元数据。 警告:未导入以下策略断言: XPath://wsdl:definitions[@targetNamespace='http://tempuri.org/']/wsdl:binding[@name='CustomBinding_IEmergencyRegistrator'] 断言:..
正在生成文件... C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\EmergencyRegistrator.cs C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\output.config
我对 WCF 服务还很陌生。我希望有人能帮助我。 谢谢。
【问题讨论】:
【参考方案1】:我已经解决了。 空引用是由于类型不明确的一些问题。当我修复它时,reference.cs 文件生成良好。
因此,解决方案是不仅要查看错误,还要查看警告。我在那里找到了解决问题所需的所有信息。快乐编码
【讨论】:
【参考方案2】:只有 Silverlight 客户端支持轮询双工 HTTP 绑定。由于您使用 svcutil
生成引用,我假设您正在为服务器构建一个“普通”(即非 SL)客户端,所以这不起作用。
如果您想在非 Silverlight 应用程序上使用双工绑定,可以查看 wsDualHttpBinding
或 netTcpBinding
。
【讨论】:
嗨。我使用 SL 应用程序。正如我在下面提到的,唯一的错误是模棱两可的类型。奇怪的是它就像警告显示的那样以上是关于由于 DuplexBinding,WCF 服务引用生成一个空的 reference.cs的主要内容,如果未能解决你的问题,请参考以下文章