代码是我最大的快乐
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

WCF调用--添加服务引用时找不到服务的解决办法

Posted on 2012-07-13 14:08  distance  阅读(3806)  评论(5编辑  收藏  举报

今天在工作中遇到这样一个问题,让我头疼了半天,最后头疼不能让人屈服,问题还是被我征服了.先展示一下错误,看看你们有木有遇到过:

造成这种结果的原因有这么几个:

  1. 服务地址不正确;

  2. 服务没有运行;

  3.netTcpBinding和endpoint节点未设置,这是在存在app.config的情况下才有可能的;

一一排除吧,前两个都没有问题,然后就开始baidu,google"元数据包含无法解析的引用","读取XML数据时,超出最大名称表字符计数配额(16384)",这样查没有结果啊,网上的千篇一律,说改什么配置文件,问题是我现在都没有加上引用呢,何来的配置文件.后来才想到下边的那句话"MaxNameTableCharCount属性,可增加配额",那就开始找这句话.这句话还是很有用,找了一会终于有答案了.

  这篇文章  里稍微有了思路,大胆改掉了VS 2010 的配置文件.

  在配置文件的最下方加入了几行代码

  

  <system.serviceModel>
    <client>
      <endpoint name="net.tcp" binding="netTcpBinding" bindingConfiguration="bc" contract="IMetadataExchange" />
    </client>
    <bindings>
      <netTcpBinding>
        <binding name="bc" maxReceivedMessageSize="2147483647">
          <readerQuotas maxNameTableCharCount="2147483647" />
          <security mode="None"/>
        </binding>
      </netTcpBinding>
    </bindings>
  </system.serviceModel>

  最耀眼的那一行便是核心,这段代码要框在<configuration></configuration> 内部,这样就OK 了,重启一下VS ,继续从前的操作,添加服务引用成功.

  之后就可以Happy的进行下边的服务调用喽!

  方法比较局限,或许有更好的办法,希望园友们不吝赐教.

 

态度决定事情的结果,态度决定人生的方向,态度决定别人对你的看法,态度能改变自己,也可以主观地去改变态度,改变的出发点就是你自己。--By Distance