我在VS2010中遇到代理生成问题。
我已经使用WCF和Pub / Sub模式创建了一个客户端/服务器应用程序。该服务在本地运行良好,但我可以在服务器上启动服务,并可以通过我的浏览器通过相关网址访问它,我不能“配置服务参考”,而不会得到以下错误:
网址上的文件 http://cfplonbs2:8686/TradePortal是 不被认可为已知文件 类型。每个错误消息 已知类型可以帮助您修复 问题: - 来自'XML Schema'的报告是'文件格式无法识别( 内容类型是'text / html; 字符集= UTF-8 ')。'。 - 来自'http:// cfplonbs2:8686 / TradePortal'的报告是 '无法识别文档格式 (内容类型为'text / html; 字符集= UTF-8 ')。'。 - 来自'DISCO Document'的报告是'下载时出错 的 'http://本地主机:8686 / TradePortal迪斯科''。 - 无法连接到远程服务器 - 无法建立连接,因为目标计算机是主动的 拒绝它127.0.0.1:8686 - 来自'WSDL文档'的报告是'文件格式未被识别( 内容类型是'text / html; 字符集= UTF-8 ')。'。元数据包含一个 无法解决的参考: 的 'http:// cfplonbs2:8686 / TradePortal'。 没有端点在听 http://cfplonbs2:8686/TradePortal那个 可以接受这个消息。这是 通常由不正确的地址引起 或SOAP动作。请参阅InnerException,if 目前,了解更多详情。遥控器 服务器返回错误:(404)不是 发现。如果定义了服务 目前的解决方案,尝试建立 解决方案并添加服务 再次参考。
我觉得令人困惑的是,当我使用svcutil.exe工具并手动生成代理时,我可以使代码工作,我的问题是这个appproach不像VS2010代理那样干净,而且他们没有实现iNotifyPropertyChanged接口。
这可能是阻止访问的服务器上的防火墙设置吗?在本地生成的代理中是否有更改我绑定的机器名的快捷方式?
服务器端的app.config是:
<services>
<service behaviorConfiguration="Default" name="CFP_Web_Lib.TradePortal">
<host>
<baseAddresses>
<add baseAddress="http://localhost:8686/TradePortal"/>
</baseAddresses>
</host>
<endpoint address="" binding="webHttpBinding"
contract="CFP_Web_Lib.ITradePortal"
behaviorConfiguration="web"/>
<endpoint address="Operations/" binding="wsDualHttpBinding"
contract="CFP_Web_Lib.ITradeOperations"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="Default">
<serviceMetadata httpGetEnabled="true"/>
<serviceDebug includeExceptionDetailInFaults="true"/>
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="web">
<webHttp/>
</behavior>
</endpointBehaviors>
</behaviors>
<bindings>
<wsDualHttpBinding>
<binding name="WSDualHttpBinding_IPubSubService" closeTimeout="00:01:00"
openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536" messageEncoding="Text"
textEncoding="utf-8" useDefaultWebProxy="true">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:10:00" />
<security mode="Message">
<message clientCredentialType="Windows" negotiateServiceCredential="true"
algorithmSuite="Default" />
</security>
</binding>
</wsDualHttpBinding>
<mexHttpBinding>
<binding name="NewBinding0" />
</mexHttpBinding>
</bindings>
关于我哪里出错的任何想法?
答案 0 :(得分:0)
首先,开发后不需要“配置服务参考”。仅更改web.config
或app.config
。
其次,检查服务器部分是否配置了mex
端点,否则您将无法创建其他客户端。
最后,当您尝试访问服务的WSDL时,请使用以下两种表示法之一:
http://server:port/service?wsdl
或
http://server:port/service/mex