Quantcast
Channel: Timothy's Space » service
Viewing all articles
Browse latest Browse all 6

VS2010中添加WCF引用的问题

$
0
0

最近在公司的项目中,遇到WCF相关的各种问题,不得不说,WCF这东东虽好,不过还是有很多不足的地方,希望微软能够持续改进。前一段时间遇到的问题,就是其中的一个,问题具体情况如下:

当你在使用Add service reference欲添加一个WCF服务的时候,在Add service reference窗口会遇到如下的错误:

The maximum nametable character count quota (16384) has been exceeded while reading XML data. The nametable is a data structure used to store strings encountered during XML processing – long XML documents with non-repeating element names, attribute names and attribute values may trigger this quota. This quota may be increased by changing the MaxNameTableCharCount property on the XmlDictionaryReaderQuotas object used when creating the XML reader.

wcf-img

从这个错误的描述,可以看出,显然在添加服务时,获取到的元数据信息超出了这个添加引用工具的最大值,从图中可以看出,VS2010提示我们,MaxNameTableCharCount这个属性的默认值为16384,其实已经无法满足我们生成这个接口所获取的元数据大小的需要。只要我们手动去修改这个值,即可让VS2010成功获取元数据,并生成service reference。

不过,要到哪里去修改这个值呢?检视了一下我们工程中的app.config,发现工程中的值已经设定为比16384更大了,应该不是这个地方。原来,获取元数据这个步骤,是VS2010本身来获取的,因此,我们得修改VS2010本身的app config文件。

定位到VS2010在你电脑上安装的地址,比如,我把VS2010安装在电脑的D盘上,因此,我的地址是:D:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE

接下来,需要修改文件:devenv.exe.config

在文件中加入如下的配置节(注意,这个配置节一定不要放在configSections的前面,否则会出错

1
2
3
4
5
6
7
8
9
10
11
12
13
<system.serviceModel>
    <bindings>
      <netTcpBinding>
        <binding name="MexBinding" maxBufferPoolSize="2147483647"            maxBufferSize="2147483647" maxReceivedMessageSize="2147483647">
          <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"              maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
          <security mode="None" />
        </binding>
      </netTcpBinding>
    </bindings>
    <client>
      <endpoint binding="netTcpBinding" bindingConfiguration="MexBinding"                        contract="IMetadataExchange" name="net.tcp" />
    </client>
  </system.serviceModel>

添加完毕后,退出并重启VS2010,然后重新添加服务引用,问题解决!

声明: 此Blog中的文章和随笔仅代表作者在某一特定时间内的观点和结论,对其完全的正确不做任何担保或假设
本站文章均采用 知识共享署名-相同方式共享3.0 协议进行授权,除非注明,本站文章均为原创,转载请注明转自 Timothy's Space 并应以链接形式标明本文地址!


Viewing all articles
Browse latest Browse all 6

Latest Images

Trending Articles





Latest Images