Usuário com melhor resposta
Configurar MaxReceivedMessageSize

Pergunta
-
Como corrigir esse problema?
Erro:
The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
ServiceReferences.ClientConfig<configuration>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_BancoDados"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address="http://servico.eklesiaonline.com.br/Service1.svc"
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="servicoEklesia.BancoDados"
name="BasicHttpBinding_BancoDados" />
</client>
</system.serviceModel>
</configuration
WEB.Config<?xml version="1.0"?>
<!--
For more information on how to configure your ASP.NET application, please visit
http://go.microsoft.com/fwlink/?LinkId=169433
-->
<configuration>
<configSections>
</configSections>
<system.diagnostics>
<trace autoflush="true" />
<sources>
<source name="System.ServiceModel"
switchValue="Information, ActivityTracing"
propagateActivity="true">
<listeners>
<add name="sdt"
type="System.Diagnostics.XmlWriterTraceListener"
initializeData="log.txt" />
</listeners>
</source>
</sources>
</system.diagnostics>
<system.web>
<compilation debug="true"
targetFramework="4.0">
<assemblies>
<add assembly="System.Data.Entity, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
</assemblies>
</compilation>
</system.web>
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_BancoDados"
maxBufferSize="2147483647"
maxReceivedMessageSize="2147483647">
<security mode="None" />
</binding>
</basicHttpBinding>
</bindings>
<client>
<endpoint address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="servicoEklesia.BancoDados"
name="BasicHttpBinding_BancoDados" />
</client>
</system.serviceModel>
</configuration
Respostas
-
Esse erro acontece no serviço ou no cliente?
Se for no serviço - no web.config (que estou assumindo ser a configuração do serviço), você não tem nenhuma configuração para serviços (esta estaria em system.serviceModel/services; você só tem uma em system.serviceModel/client). Imagino que o que esteja acontecendo é que o serviço está usando as configurações padrão (binding basicHttpBinding, com as quotas "default"). Tenta adicionar a seção abaixo no web.config pra ver se o problema é resolvido:
<services>
<service name="O_mesmo_nome_do_servico_que_esta_definido_no_Service1.svc">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="O_nome_da_interface_decorada_com_[ServiceContract]" />
</service>
</services>- Marcado como Resposta Wellington Patroni quinta-feira, 2 de dezembro de 2010 11:42
-
Boas Wellington,
Deveria ser assim:
<services>
<service name="EklesiaServico.Service1">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="EklesiaServico.BancoDados" />
</service>
</services>
http://www.israelaece.com- Marcado como Resposta Wellington Patroni quinta-feira, 2 de dezembro de 2010 11:42
Todas as Respostas
-
Esse erro acontece no serviço ou no cliente?
Se for no serviço - no web.config (que estou assumindo ser a configuração do serviço), você não tem nenhuma configuração para serviços (esta estaria em system.serviceModel/services; você só tem uma em system.serviceModel/client). Imagino que o que esteja acontecendo é que o serviço está usando as configurações padrão (binding basicHttpBinding, com as quotas "default"). Tenta adicionar a seção abaixo no web.config pra ver se o problema é resolvido:
<services>
<service name="O_mesmo_nome_do_servico_que_esta_definido_no_Service1.svc">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="O_nome_da_interface_decorada_com_[ServiceContract]" />
</service>
</services>- Marcado como Resposta Wellington Patroni quinta-feira, 2 de dezembro de 2010 11:42
-
Ola Carlos ... obrigado pela sua resposta...
Acredito que tenha feito a configuração correta... mas continua o mesmo erro... segue mais informações abaixo...
Erro:The maximum message size quota for incoming messages (65536) has been exceeded. To increase the quota, use the MaxReceivedMessageSize property on the appropriate binding element.
web.config do Servico
<?xml version="1.0"?><configuration>
<configSections><sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" ><section name="EklesiaServico.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" /></sectionGroup></configSections><system.web><compilation debug="true" targetFramework="4.0" /></system.web><system.serviceModel><behaviors><serviceBehaviors><behavior><!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment --><serviceMetadata httpGetEnabled="true"/><!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --><serviceDebug includeExceptionDetailInFaults="true"/></behavior></serviceBehaviors></behaviors><serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel><system.webServer><modules runAllManagedModulesForAllRequests="true"/></system.webServer><connectionStrings></connectionStrings>
<applicationSettings><EklesiaServico.Properties.Settings><setting name="EklesiaServico_servicoCEP_CEPService" serializeAs="String"><value>http://www.byjg.com.br/site/webservice.php/ws/cep</value></setting></EklesiaServico.Properties.Settings></applicationSettings>
<system.diagnostics>
<trace autoflush="true" />
<sources><source name="System.ServiceModel"switchValue="Information, ActivityTracing"propagateActivity="true">
<listeners><add name="traceListener"type="System.Diagnostics.XmlWriterTraceListener"initializeData= "TracesCrm.svclog" /></listeners></source></sources></system.diagnostics>
<system.serviceModel><bindings>
<basicHttpBinding><binding name="BasicHttpBinding_BancoDados"maxBufferSize="2147483647"maxBufferPoolSize="2147483647"maxReceivedMessageSize="2147483647"><readerQuotas maxStringContentLength="2000000"maxArrayLength="2000000" /><security><transport><extendedProtectionPolicy policyEnforcement="Never" /></transport></security></binding></basicHttpBinding></bindings>
<services><service name="BancoDados"><endpointaddress=""binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_BancoDados"contract="EklesiaServico.BancoDados" /></service></services></system.serviceModel></configuration>
ServiceReferences.ClientConfig
<configuration><system.serviceModel><bindings><basicHttpBinding><binding name="BasicHttpBinding_BancoDados"maxBufferSize="2147483647"maxReceivedMessageSize="2147483647"><security mode="None" /></binding></basicHttpBinding></bindings><client><endpoint address="http://servico.eklesiaonline.com.br/Service1.svc"binding="basicHttpBinding"bindingConfiguration="BasicHttpBinding_BancoDados"contract="servicoEklesia.BancoDados"name="BasicHttpBinding_BancoDados" /></client></system.serviceModel>
</configuration>
Servico de Salvar uma Foto: Essa Rotina que esta gerando o erro.....
public void SalvarFoto(Entidades.Pessoa entidade, string stringConexao){if (entidade.Foto != null){using (SqlConnection Conn = new SqlConnection(new cBancoDados().ObterStringDeConexao(stringConexao))){string SQL = "UpDate Pessoa set [Foto] = @Foto Where Codigo = " + entidade.Codigo;
SqlCommand cmd = new SqlCommand(SQL, Conn);cmd.Parameters.AddWithValue("@Foto", SqlDbType.Image).Value = entidade.Foto;
try{Conn.Open();cmd.ExecuteNonQuery();Conn.Close();}catch (SqlException ex){var pasta = HttpContext.Current.Server.MapPath("/");var textWriter = new StreamWriter(string.Format(@"{0}/{1}.txt", pasta, DateTime.Now.ToString().Replace("/", "-").Replace(":", "-").Replace(" ", "-")));
textWriter.WriteLine(ex.Message);textWriter.Close();}}};}
Botão de Salvar Foto Cliente.
Foto Tirada pela WebCam......
private void salvarFoto(){Pessoa entidade = new Pessoa();if (imMinhaFoto.Source != null){entidade.Codigo = id;entidade.Foto = GetPictureAsBytes();
servico.SalvarFotoCompleted += (obj, arg) =>{MessageBox.Show("ok");};servico.SalvarFotoAsync(entidade, global.stringConexao);}}
Rotina de conversão de imagem para byte
private byte[] GetPictureAsBytes(){if (imagemArquivo != null){byte[] binaryData = new Byte[imagemArquivo.Length];imagemArquivo.Seek(0, SeekOrigin.Begin);long bytesRead = imagemArquivo.Read(binaryData, 0, (int)imagemArquivo.Length);return binaryData;}
if (imagemWebCam != null){int width = imagemWebCam.PixelWidth;int height = imagemWebCam.PixelHeight;int bands = 3;byte[][,] raster = new byte[bands][,];
//Convert the Image to pass into FJCore//Code From http://stackoverflow.com/questions/1139200/using-fjcore-to-encode-silverlight-writeablebitmapfor (int i = 0; i < bands; i++){raster[i] = new byte[width, height];}
for (int row = 0; row < height; row++){for (int column = 0; column < width; column++){int pixel = imagemWebCam.Pixels[width * row + column];raster[0][column, row] = (byte)(pixel >> 16);raster[1][column, row] = (byte)(pixel >> 8);raster[2][column, row] = (byte)pixel;}}
ColorModel model = new ColorModel { colorspace = ColorSpace.RGB };FluxJpeg.Core.Image img = new FluxJpeg.Core.Image(model, raster);
//Encode the Image as a JPEGMemoryStream stream = new MemoryStream();FluxJpeg.Core.Encoder.JpegEncoder encoder = new FluxJpeg.Core.Encoder.JpegEncoder(img, 100, stream);encoder.Encode();
//Back to the startstream.Seek(0, SeekOrigin.Begin);
//Get the Bytes and write them to the streambyte[] binaryData = new Byte[stream.Length];long bytesRead = stream.Read(binaryData, 0, (int)stream.Length);return binaryData;}return null;}
-
Boas Wellington,
Como o Carlos disse, talvez o nome do serviço esteja errado. Ele precisa ter o full-name, incluindo o namespace. Será que a sua classe também não está debaixo do namespace EklesiaServico, assim como o contrato?
Mas tanto o serviço e o contrato possuem o mesmo nome? O contrato deveria ser a interface.
-
Boas Israel, obrigado pela resposta
Estou iniciando no Silverlight e desenvolvimento web agora... sempre desenvolvi offline...
Eu acho que entendi o que vc me disse no post anterior... mas só para confirmar eu coloquei novamente os codigos abaixo.
Desde ja Obrigado pela ajuda....
IService1.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Collections.ObjectModel;namespace EklesiaServico
{// NOTE: You can use the "Rename" command on the "Refactor" menu to change the interface name "IService1" in both code and config file together.
[ServiceContract]
public interface BancoDados{
[OperationContract]
Boolean registroDoBancoDados(string stringConexao);Service1.svc.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
using System.Net;
using System.Net.Mail;
using System.Text.RegularExpressions;
using System.Data.SqlClient;
using System.Collections.ObjectModel;
using System.Configuration;
using System.Data;
using System.IO;
using System.Web;namespace EklesiaServico
{// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
public class Service1 : BancoDados
{string sql = "";
public Boolean registroDoBancoDados(string stringConexao)Web.Config do meu servico
<system.serviceModel>
<bindings>
<basicHttpBinding>
<binding name="BasicHttpBinding_BancoDados"
maxBufferSize="2147483647"
maxBufferPoolSize="2147483647"
maxReceivedMessageSize="2147483647">
<readerQuotas maxStringContentLength="2000000"
maxArrayLength="2000000" />
<security>
<transport>
<extendedProtectionPolicy policyEnforcement="Never" />
</transport>
</security>
</binding>
</basicHttpBinding>
</bindings>
<services>
<service name="EklesiaServico.Service1.svc">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="EklesiaServico.BancoDados" />
</service>
</services>
</system.serviceModel>
-
Boas Wellington,
Deveria ser assim:
<services>
<service name="EklesiaServico.Service1">
<endpoint
address=""
binding="basicHttpBinding"
bindingConfiguration="BasicHttpBinding_BancoDados"
contract="EklesiaServico.BancoDados" />
</service>
</services>
http://www.israelaece.com- Marcado como Resposta Wellington Patroni quinta-feira, 2 de dezembro de 2010 11:42
-
Deu certo meu amigo...
Obrigado por passar seu conhecimento para quem esta iniciando.....
"A Plavra certa na hora certa é como um desenho de ouro feito em cima de prata, Quando alguém está querendo aprender, o conselho de uma pessoa experiente vale mais do que anéis de outro ou jóias de ouro puro." Proverbios 25:11-12