最大数组长度配额

2023-11-24

我正在编写一个小型 WCF/WPF 应用程序来调整图像大小,但当我尝试从客户端向我的服务发送大小为 28K 的图像时,WCF 给我带来了痛苦。当我发送较小的图像时,该服务工作正常。我立即认为这是一个配置问题,并且我在网上搜索了有关我的绑定配置中的 MaxArrayLength 属性的帖子。我已将客户端和服务器上的这些设置的限制提高到最大值 2147483647,但仍然收到以下错误:

格式化程序在尝试反序列化消息时引发异常:尝试反序列化时出错 范围http://mywebsite.com/services/servicecontracts/2009/01:OriginalImage。 InnerException 消息是“反序列化 System.Drawing.Image 类型的对象时出错”。 读取 XML 数据时超出了最大数组长度配额 (16384)。通过更改创建 XML 读取器时使用的 XmlDictionaryReaderQuotas 对象的 MaxArrayLength 属性,可以增加此配额。请参阅 InnerException 了解更多详细信息。

我已将客户端和服务器配置设置为相同,它们如下所示: 服务器:

<system.serviceModel>
    <bindings>
        <netTcpBinding>
            <binding name="NetTcpBinding_ImageResizerServiceContract" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"
                maxReceivedMessageSize="2147483647">
                <readerQuotas maxDepth="32"
                              maxStringContentLength="2147483647"
                              maxArrayLength="2147483647"
                              maxBytesPerRead="2147483647"
                              maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                    <message clientCredentialType="Windows" />
                </security>
            </binding>
        </netTcpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehavior">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="LogoResizer.WCF.ServiceTypes.ImageResizerService" behaviorConfiguration="ServiceBehavior">
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:900/mex/"/>
                    <add baseAddress="net.tcp://localhost:9000/" />
                </baseAddresses>
            </host>
            <endpoint binding="netTcpBinding" contract="LogoResizer.WCF.ServiceContracts.IImageResizerService" />
            <endpoint  address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
</system.serviceModel>

我的客户端配置如下所示:

 <system.serviceModel>
    <bindings>
        <netTcpBinding>
            <binding name="NetTcpBinding_ImageResizerServiceContract" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"
                maxReceivedMessageSize="2147483647">
                <readerQuotas maxDepth="32" 
                              maxStringContentLength="2147483647"
                              maxArrayLength="2147483647" 
                              maxBytesPerRead="2147483647" 
                              maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                    <message clientCredentialType="Windows" />
                </security>
            </binding>
        </netTcpBinding>
    </bindings>
    <client>
        <endpoint address="net.tcp://localhost:9000/" binding="netTcpBinding"
            bindingConfiguration="NetTcpBinding_ImageResizerServiceContract"
            contract="ImageResizerService.ImageResizerServiceContract"
            name="NetTcpBinding_ImageResizerServiceContract">
            <identity>
                <userPrincipalName value="[email protected]" />
            </identity>
        </endpoint>
    </client>
</system.serviceModel>

似乎无论我将这些值设置为什么,我仍然收到错误消息,指出 wcf 无法序列化我的文件,因为它大于 16384。有什么想法吗?

Update:为了保护我的隐私,userPrincipalName 标签中的电子邮件地址已被更改


我的坏处 - 我忘记将绑定配置应用到服务器端配置中的端点。服务器配置应为:

<system.serviceModel>
    <bindings>
        <netTcpBinding>
            <binding name="NetTcpBinding_ImageResizerServiceContract" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                transactionFlow="false" transferMode="Buffered" transactionProtocol="OleTransactions"
                hostNameComparisonMode="StrongWildcard" listenBacklog="10"
                maxBufferPoolSize="2147483647" maxBufferSize="2147483647" maxConnections="10"
                maxReceivedMessageSize="2147483647">
                <readerQuotas maxDepth="2147483647"
                              maxStringContentLength="2147483647"
                              maxArrayLength="2147483647"
                              maxBytesPerRead="2147483647"
                              maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00" enabled="false" />
                <security mode="Transport">
                    <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign" />
                    <message clientCredentialType="Windows" />
                </security>
            </binding>

        </netTcpBinding>
    </bindings>
    <behaviors>
        <serviceBehaviors>
            <behavior name="ServiceBehavior">
                <serviceMetadata httpGetEnabled="true" />
                <serviceDebug includeExceptionDetailInFaults="false" />
            </behavior>
        </serviceBehaviors>
    </behaviors>
    <services>
        <service name="LogoResizer.WCF.ServiceTypes.ImageResizerService" behaviorConfiguration="ServiceBehavior">
            <host>
                <baseAddresses>
                    <add baseAddress="http://localhost:900/mex/"/>
                    <add baseAddress="net.tcp://localhost:9000/" />
                </baseAddresses>
            </host>
            <endpoint bindingConfiguration="NetTcpBinding_ImageResizerServiceContract" binding="netTcpBinding" contract="LogoResizer.WCF.ServiceContracts.IImageResizerService" />
            <endpoint  address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
        </service>
    </services>
</system.serviceModel>

请注意,boundingConfiguration="NetTcpBinding_ImageResizerServiceContract" 已添加到 netTcp 端点。我的应用程序现在可以处理更大的图像。甜的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大数组长度配额 的相关文章

随机推荐

  • 错误 ITMS-90168:“您上传的二进制文件无效。”

    错误 ITMS 90168 您上传的二进制文件无效 生成的 API 分析文件太大 我们无法验证 交付前您的 API 每次我想将新版本的应用程序上传到 iTunes connect 时 都会出现上述错误 我正在使用应用程序加载器进行上传 我的
  • 监视目录列表的更改?

    在 unix 系统上 我如何监视 例如 tail 的工作原理 目录中对文件所做的更改 创建新文件或大小更改等 寻找命令行工具而不是要安装的东西 大多数 UNIX 变体都有一个 API 但它没有标准化 在Linux上 有inotify 在命令
  • ES6 尾递归优化堆栈溢出

    读过Rauschmayer 博士的描述关于 es6 中的递归尾部调用优化 我一直在尝试重新创建他详细介绍的递归阶乘函数的 零堆栈 执行 使用 Chrome 调试器在堆栈帧之间步进 我发现尾部优化没有发生 并且正在为每个递归创建一个堆栈帧 我
  • 为数组 x 中的每个元素选择 n 个项目(从泊松分布中抽取)的快速方法

    我在解决遇到的问题时遇到了一些麻烦 我有一个包含价格的数组 gt gt gt x np random randint 10 size 10 array 6 1 7 6 9 0 8 2 1 8 以及 随机 生成的泊松分布到达数组 gt gt
  • Keras ValueError:尺寸必须相等问题

    即使应用了答案和评论中的建议后 尺寸不匹配问题似乎仍然存在 这也是要复制的确切代码和数据文件 https drive google com drive folders 1q67s0VhB O7J8OtIhU2jmj7Kc4LxL3sf us
  • 在 Ruby 中动态创建类

    我有一个类应该看起来像这样 class Family Type1 people Array new 3 people 0 Policeman new Peter 0 people 1 Accountant new Paul 0 people
  • Android 意图过滤器不起作用

    我的应用程序可以打开以下文件格式 kml 应用程序 vnd google earth kml xml kmz 应用程序 vnd google earth kmz gpx 应用程序 gpx xml 我正在尝试正确设置我的意图过滤器 以便在尝试
  • Path.Combine() 行为与驱动器号

    根据官方文档有关Path Combine方法 https msdn microsoft com en us library fyy7a5kt v vs 110 aspx Remarks 如果 path1 不是驱动器引用 即 C 或 D 并且
  • 如何从 numpy 多维数组中获取 k 个最大值的索引

    我问了几个问题StackOverflow但找不到相关答案 我想从 a 中获取 k 个最大值的索引numpy ndarray 这个链接讨论相同但针对一维数组 np argsort对于二维数组导致元素按行排序 IE Note array ele
  • MongoDB 中的文档大小

    考虑将来切换到 DynamoDB 但希望确保我的文档在 1KB 以下 因为它们按 KB 收费 有没有一种快速方法可以知道集合中文档的大小 作为一般指南 您可以检查集合中文档的平均大小collname使用avgObjSize收藏报告的价值st
  • 如何对使用其自身输出的滞后值的函数进行矢量化?

    我很抱歉问题的措辞不好 但这是我能做的最好的事情 我确切地知道自己想要什么 但不知道如何要求它 下面是一个例子演示的逻辑 取值 1 或 0 的两个条件会触发一个也取值 1 或 0 的信号 无论如何 条件 A 都会触发信号 如果 A 1 则信
  • Microsoft Visual Studio 2012 已停止工作

    我一直在 Windows Server 2008 R2 sp1 上使用 Visual Studio 2012 尽管除了性能有点慢之外 它似乎工作得很好 但每当我关闭应用程序时 我都会收到以下错误 Microsoft Visual Studi
  • 使用 jQuery 将密码字段更改为带有复选框的文本

    如何通过复选框选中取消选中将密码字段切换为文本和密码 这是你要找的吗
  • SQL Server 2005 生成的创建表脚本不起作用

    我正在为现有数据库创建数据库脚本 我尝试使用 SQL Server 为我生成脚本 但生成的脚本失败 我正在使用 脚本表为 gt 创建到 gt 新查询编辑器窗口 选项 然后 我更改表和约束名称并执行脚本 我很困惑 有人能看到这里的问题吗 我收
  • 使用 next_permutation 排列类向量

    是否可以使用 std next permutation 来排列我创建的类的向量的元素 next permutation 中的比较参数如何工作 是否可以使用 std next permutation 来排列我创建的类的向量的元素 Yes Tr
  • 跨浏览器 CSS3 关键帧动画 Firefox

    我使用 CSS3 和关键帧在播放按钮 这是一个锚标记 上实现了一个简单的 脉动 效果 虽然它在 Chrome 和 Safari 中完美运行 但在 Firefox 中似乎不起作用 有人知道为什么吗 li gt a webkit animati
  • Flex:如何为 TabNavigator 组件添加选项卡关闭按钮

    我想要一个TabNavigator具有某些选项卡的关闭按钮的组件 我怎么做 看来TabNavigator组件不允许 或者我找不到 这种形式的可扩展性 帮助 谢谢 您应该从以下位置查看 SuperTabNavigator 组件 FlexLib
  • Convert.ToString() 转换为二进制格式无法按预期工作

    int i 20 string output Convert ToString i 2 Base2 formatting i 20 output Convert ToString i 2 Value Expected Actual 20 0
  • MS Access 中的透视查询

    我在 Access 表中有以下数据 ID Name CAT 1 Bill Red 1 Bill Yellow 1 Bill Green 1 Bill Orange 2 Ted Purple 2 Ted White 3 Alice Indig
  • 最大数组长度配额

    我正在编写一个小型 WCF WPF 应用程序来调整图像大小 但当我尝试从客户端向我的服务发送大小为 28K 的图像时 WCF 给我带来了痛苦 当我发送较小的图像时 该服务工作正常 我立即认为这是一个配置问题 并且我在网上搜索了有关我的绑定配