WCF代理生成问题

WCF代理生成问题,wcf,visual-studio-2010,proxy-classes,Wcf,Visual Studio 2010,Proxy Classes,我在VS2010中生成代理时遇到问题 我使用WCF和Pub/Sub模式创建了一个客户机/服务器应用程序。该服务在本地运行良好,但尽管我可以在服务器上启动该服务,并可以通过浏览器通过相关url访问该服务,但如果不出现以下错误,我无法配置服务引用: url上的文档 是 未被识别为已知文档 类型来自每个服务器的错误消息 已知类型可能会帮助您修复此问题 问题: -来自“XML架构”的报告是“文档格式无法识别” 内容类型为“文本/html”; 字符集=UTF-8''。 -报告来自'http://cfplo

我在VS2010中生成代理时遇到问题

我使用WCF和Pub/Sub模式创建了一个客户机/服务器应用程序。该服务在本地运行良好,但尽管我可以在服务器上启动该服务,并可以通过浏览器通过相关url访问该服务,但如果不出现以下错误,我无法配置服务引用:

url上的文档 是 未被识别为已知文档 类型来自每个服务器的错误消息 已知类型可能会帮助您修复此问题 问题: -来自“XML架构”的报告是“文档格式无法识别” 内容类型为“文本/html”; 字符集=UTF-8''。 -报告来自'http://cfplonbs2:8686/TradePortal”“是吗 '文档格式无法识别 内容类型为“文本/html”; 字符集=UTF-8''。 -“DISCO文档”中的报告是“下载时出错” 'http://localhost:8686/TradePortal?disco'.'. -无法连接到远程服务器 -无法建立连接,因为目标计算机处于活动状态 拒绝127.0.0.1:8686 -来自“WSDL文档”的报告是“文档格式无法识别” 内容类型为“文本/html”; 字符集=UTF-8''。元数据包含 无法解析的引用: 'http://cfplonbs2:8686/TradePortal'. 没有端点在侦听 那个 我可以接受这个消息。这是 通常由不正确的地址引起 或SOAP操作。如果需要,请参阅InnerException 出席,了解更多详情。遥控器 服务器返回了一个错误:404 Not 建立如果服务是在中定义的 在当前的解决方案中,请尝试构建 解决方案和添加服务 再次引用

我发现令人困惑的是,当我使用svcutil.exe工具并手动生成代理时,我可以让代码正常工作。我使用此appproach的问题是它不像VS2010代理那样干净,并且它们没有实现iNotifyPropertyChanged接口

这可能是阻止访问的服务器上的防火墙设置吗?在本地生成的代理中是否有更改绑定的机器名的快捷方式

服务器端的My 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>

您对我的错误有什么想法吗?

首先,在开发之后,您不需要配置服务引用。仅更改web.config或app.config中的地址点

第二,检查服务器部分是否配置了mex端点,否则将无法创建其他客户端

最后,当您尝试访问服务的WSDL时,请使用以下两种符号之一:

http://server:port/service?wsdl


我认为问题在于wsDualHttpBinding的安全性,当我更改地址时,出现了一个安全错误。我已经把它换成了NetTcP,现在可以正常工作了
http://server:port/service/mex