我的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:错误请求。
答案 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
中所述