C# 如何将图像数据发送到WCF服务

C# 如何将图像数据发送到WCF服务,c#,wcf-binding,C#,Wcf Binding,我已经搜索并尝试了所有以前发布的建议解决方案,但没有任何运气。很明显,我做错了一些我无法理解的事情,我希望有人能在这里帮助我。我的问题是: 我有一个WCF服务和一个WCF客户端。当我调用服务并尝试传递字节数组(将图像上载到服务)时,我得到一个非常模糊的目标调用异常错误。因此,我连接了跟踪,跟踪日志告诉我消息配额大小超出了限制,但我修改了两端的配置(app.config和web.config),以包含一个非常大的限制。问题是,它告诉我超过了65536的限制,但正如您从下面的配置中所看到的,它远远大

我已经搜索并尝试了所有以前发布的建议解决方案,但没有任何运气。很明显,我做错了一些我无法理解的事情,我希望有人能在这里帮助我。我的问题是:

我有一个WCF服务和一个WCF客户端。当我调用服务并尝试传递字节数组(将图像上载到服务)时,我得到一个非常模糊的目标调用异常错误。因此,我连接了跟踪,跟踪日志告诉我消息配额大小超出了限制,但我修改了两端的配置(app.config和web.config),以包含一个非常大的限制。问题是,它告诉我超过了65536的限制,但正如您从下面的配置中所看到的,它远远大于该数量,因此就好像我的客户机正在使用一些其他配置值,或者我只是没有正确配置它,它忽略了我所拥有的。有人能帮我吗

App.Config:

Web.Config:

如果你们能提供任何帮助,我们将不胜感激。我已经在这个问题上纠缠了两天了

谢谢大家

以下是实际的配置代码:

<system.serviceModel>
    <bindings>            
        <wsHttpBinding>
            <binding name="WSHttpBinding_IDataSyncService" closeTimeout="00:01:00"
                openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00"
                bypassProxyOnLocal="false" transactionFlow="false" hostNameComparisonMode="StrongWildcard"
                maxBufferPoolSize="2147483647" maxReceivedMessageSize="2147483647"
                messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
                allowCookies="false">
                <readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
                    maxArrayLength="2147483647" maxBytesPerRead="2147483647" maxNameTableCharCount="2147483647" />
                <reliableSession ordered="true" inactivityTimeout="00:10:00"
                    enabled="false" />
                <security mode="Message">
                    <transport clientCredentialType="Windows" proxyCredentialType="None"
                        realm="" />
                    <message clientCredentialType="Windows" negotiateServiceCredential="true"
                        algorithmSuite="Default" />
                </security>
            </binding>
        </wsHttpBinding>
    </bindings>
    <client>
        <endpoint address="http://localhost/DataSyncWCF/DataSyncService.svc"
            binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IDataSyncService"
            contract="IDataSyncService" name="WSHttpBinding_IDataSyncService">
            <identity>
              <dns value="localhost" />
            </identity>
      </endpoint>
    </client>
</system.serviceModel> 

WCF中的所有内容都受到严格限制(限制),这是有道理的

我在你的配置中看到很多2G数字,一般来说这不是一个好主意。您可能错过了一些,我不能这么快发现序列化限制(近似名称)


在WCF中有两种处理大型消息的基本方法:和流

WCF中的所有内容都受到严格限制(限制),这是有原因的

我在你的配置中看到很多2G数字,一般来说这不是一个好主意。您可能错过了一些,我不能这么快发现序列化限制(近似名称)


在WCF中有两种处理大型消息的基本方法:和流

在web.config wsHttpBinding中,设置
maxReceivedMessageSize

<binding name="www" maxReceivedMessageSize="2147483647">

在web.config wsHttpBinding中,设置
maxReceivedMessageSize

<binding name="www" maxReceivedMessageSize="2147483647">


更改配置文件后是否尝试重新启动服务器?另外,您是否尝试发送小于65K的图像?这将是一个很好的开始。提示:将代码、XML也发布为具有正确格式的文本(
{}
按钮)。使搜索等变得更加容易。@Paul Sasik我确实尝试发送了一张小于65k的较小图像,这确实有效。问题是,我将发送每个大小约为90-120K的图像。更改配置文件后是否尝试重新启动服务器?另外,您是否尝试发送小于65K的图像?这将是一个很好的开始。提示:将代码、XML也发布为具有正确格式的文本(
{}
按钮)。使搜索等变得更加容易。@Paul Sasik我确实尝试发送了一张小于65k的较小图像,这确实有效。问题是,我将要发送的图像大小约为90-120K。是的,我只是把值放得太高,因为我收到的错误。我将数字增加到如此高的值,以查看这是否能解决问题,然后在知道我有了解决方案后,我会反向减少它。我已经尝试过MTOM,这也没有改变结果。我会考虑流。很容易使用,而且它显示了无论如何都需要的流(异步)行为。是的,我只是因为收到错误而将值设置得很高。我将数字增加到如此高的值,以查看这是否能解决问题,然后在知道我有了解决方案后,我会反向减少它。我已经尝试过MTOM,这也没有改变结果。我会考虑流。易于使用,并且它显示了无论如何都需要的流(异步)行为。是的,我已经在客户端配置和web.config中设置了该值。您可以添加您接收到的确切错误消息吗?这将帮助我们确定需要更改的配置(仅供参考:我们正在通过WCF成功传输非常大(>1GB)的文件,因此没有固有的问题)。是的,我已在客户端配置和web.config中设置了该值。您能添加接收到的准确错误消息吗?这将帮助我们确定需要更改的配置(仅供参考:我们正在通过WCF成功传输非常大(>1GB)的文件,因此不存在固有问题)。
<binding name="www" maxReceivedMessageSize="2147483647">