2011-03-02 45 views
1

的参数我写了一些服务,有方法得到的图像(字节[])作为参数(返回空隙)。我也写了一些客户端(客户端&服务器上运行相同machien - 不同sulody - 使用IIS)发送位图(作为字节[])的服务 - 每次我尝试发送我得到的异常:无法发送图像(字节[])作为WCF服务

错误而接收到http://localhost/WebService/Service.svc HTTP响应发生。这可能是由于服务端点绑定不使用HTTP协议。这也可能是由于一个HTTP请求上下文服务器(可能由于服务关闭)

我增加了一个方法获取无效,并返回INT被中止 - 我可以调用此方法没有任何问题。

什么可能是错误的?我是否需要在客户服务参考中定义某些特定项目?

的服务方法

[ServiceContract] 
**public interface IService** 
{ 
    [OperationContract] 
    void GetPic(byte[] pic); 
} 

**public class Service : IService** 
{ 
    public void GetPic(byte[] pic) 
    { 
      ... 
    } 
} 

Web.config文件:

<system.serviceModel> 
<services> 
    <service behaviorConfiguration="ServiceBehavior" name="ServiceProxy.Service"> 

    <endpoint 
     name="basicHttp" 
     address="" 
     binding="basicHttpBinding" 
     bindingConfiguration="" 
     contract="Contracts.IService"> 
    </endpoint> 

    <endpoint 
     address="mex" 
     binding="mexHttpBinding" 
     contract="IMetadataExchange" > 
    </endpoint> 

    <host> 
     <baseAddresses> 
     <add baseAddress="http://localhost:8731/ServiceProxy/" /> 
     </baseAddresses> 
    </host> 

    </service> 
</services> 

<behaviors> 
    <serviceBehaviors> 
    <behavior name="ServiceBehavior"> 
     <serviceMetadata httpGetEnabled="True"/>  
     <serviceDebug includeExceptionDetailInFaults="False" /> 
    </behavior> 
    </serviceBehaviors> 
</behaviors> 

+0

可以显示/股的实际方法? – rene 2011-03-02 11:33:22

+0

客户端方法或服务方法? – Yanshof 2011-03-02 11:34:22

+0

我猜一开始的服务方法。 – rene 2011-03-02 11:38:00

回答

3

您必须配置在服务器的绑定来接受大的消息。默认情况下,它只接受最大65KB的消息和16k元素的数组=大小小于16KB的情况位图。

使用这个在你的web.config(服务器端):

<bindings> 
    <basicHttpBinding> 
    <binding name="myBinding" maxReceivedMessageSize="1000000"> 
     <readerQuotas maxArrayLength="1000000" /> 
    </binding> 
    </basicHttpBinding> 
</bindings> 

在你的端点配置参考此将其设置为myBindingbindingConfiguration属性绑定。

+0

谢谢!!!!是工作 ! – Yanshof 2011-03-02 12:28:32