2

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

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

任何人都可以提出一个解决方案来增加 mex 文件允许的大小吗?

这是实际的错误:

错误:无法从http://localhost:8021/mex获取元数据如果这是您有权访问的 Windows (R) Communication Foundation 服务,请检查您是否已在指定地址启用元数据发布。有关启用元数据发布的帮助,请参阅位于http://go.microsoft.com/fwlink/?LinkId=65455.WS-Metadata Exchange Error URI: http://localhost:8021/mex Metadata contains a reference的 MSDN 文档无法解决:' 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:错误请求。

4

1 回答 1

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 文章中所述

于 2010-01-19T09:20:52.163 回答