WCF mex太大了

时间:2010-01-19 09:08:30

标签: wcf mex-bindings

我的mex绑定超过了16k的读者配额。我知道如何增加basicHttpBindings的大小,但是mexHttpBinding不允许增加缓冲区大小等。

我不能将服务分解为更小的服务。因为我们的网站必须处理请求,即使我们的生产服务器处理业务逻辑和数据处理,我们也必须编写自定义路由服务,因为只有IIS6。

有人可以建议一个增加mex文件允许大小的解决方案吗?

以下是实际错误:

  

错误:无法从http://localhost:8021/mex获取元数据如果这是您有权访问的Windows(R)Communication Foundation服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange错误URI上的MSDN文档:http://localhost:8021/mex元数据包含无法解析的引用:“http://localhost:8021/mex”。 XML文档中存在错误(1,148711)。读取XML数据时已超出最大名称字符集计数配额(16384)。 nametable是用于存储XML处理期间遇到的字符串的数据结构 - 具有非重复元素名称,属性名称和属性值的长XML文档可能会触发此配额。通过更改创建XML阅读器时使用的XmlDictionaryReaderQuotas对象上的MaxNameTableCharCount属性,可以增加此配额。第1行,位置148711.HTTP GET错误URI:http://localhost:8021/mex下载“http://localhost:8021/mex”时出错。请求失败,HTTP状态为400:错误请求。

1 个答案:

答案 0 :(得分:1)

为mex端点尝试以下自定义绑定:

<customBinding>
<binding name="customMex">
        <textMessageEncoding>
    <readerQuotas maxDepth="2147483647"
      maxStringContentLength="2147483647"
      maxArrayLength="2147483647"
      maxBytesPerRead="2147483647"
      maxNameTableCharCount="2147483647" />
        </textMessageEncoding>
    <httpTransport transferMode="Buffered"
      maxReceivedMessageSize="2147483647"
      maxBufferSize="2147483647"/>
</binding>

如果您愿意,可以修改大小,并使用如下所示的端点引用绑定:

    <endpoint address="mex"
    binding="customBinding" 
    contract="IMetadataExchange" 
    name=""
    bindingConfiguration="customMex" 
    listenUriMode="Explicit" />

Svcutil配置覆盖

如果你正在使用svcutil,它有自己的限制,可以通过创建配置文件来覆盖,如Geeks With Blogs Article

中所述