今天在工作中遇到这样一个问题,让我头疼了半天,最后头疼不能让人屈服,问题还是被我征服了.先展示一下错误,看看你们有木有遇到过:
造成这种结果的原因有这么几个:
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的进行下边的服务调用喽!
方法比较局限,或许有更好的办法,希望园友们不吝赐教.