none
Limites para transporte de dados RRS feed

  • Pergunta

  • Ola pessoal

    Estou com um problema que achei ter resolvido mas na realidade não.

    O WCF esta recusando em retornar um determinado volume de dados. O Israel me deu umas dicas para modificdar estes valores no binding, então fiz assim:


            public void IniciarServidorHost()
            {
                string strEndereco;
                ServiceBehaviorAttribute Debug;

                strEndereco = Protocolo + "://" + EnderecoIp + ":" + Porta.ToString();

                _Binding = new NetTcpBinding();
               
                _Binding.Name                                                       = "BindPrototipo";
                _Binding.MaxBufferPoolSize                                  = int.MaxValue;
                _Binding.MaxBufferSize                                         = int.MaxValue;
                _Binding.MaxReceivedMessageSize                      = int.MaxValue;
                _Binding.ReaderQuotas.MaxArrayLength              = int.MaxValue;
                _Binding.ReaderQuotas.MaxBytesPerRead            = int.MaxValue;
                _Binding.ReaderQuotas.MaxDepth                         = int.MaxValue;
                _Binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;

                _BindingMex = MetadataExchangeBindings.CreateMexTcpBinding();

                _BindingMex.Name = "BindingMex";

                _HostPrincipal = new ServiceHost(typeof(_ServicoGestao), new Uri[] { new Uri(strEndereco) });

                // Publicar os contratos aqui          
                _HostPrincipal.AddServiceEndpoint(typeof(IDadosServidor), _Binding, "DadosDoServidor");
                _HostPrincipal.AddServiceEndpoint(typeof(IDepartamento), _Binding, "Departamento");
                _HostPrincipal.AddServiceEndpoint(typeof(IGeraCodigo), _Binding, "GeraCodigo");

                _HostPrincipal.Description.Behaviors.Add(new ServiceMetadataBehavior());
                // _HostPrincipal.AddServiceEndpoint(typeof(IMetadataExchange), MetadataExchangeBindings.CreateMexTcpBinding(), "mexPrincipal");
                _HostPrincipal.AddServiceEndpoint(typeof(IMetadataExchange), _BindingMex, "mexPrincipal");

                Debug = _HostPrincipal.Description.Behaviors.Find<ServiceBehaviorAttribute>();

                if (Debug == null)
                {
                    Debug = new ServiceBehaviorAttribute();
                    _HostPrincipal.Description.Behaviors.Add(Debug);
                }

                Debug.IncludeExceptionDetailInFaults = true;

                _HostPrincipal.Open();
            }


    Bom o que esta acontecendo é que quando faço a importção do servidor no lado cliente, os valores para os binding vem diferente daqueles que eu defini no servidor, veja come ficou no cliente:

      <system.serviceModel>
        <bindings>
          <netTcpBinding>
            <binding name="BindPrototipo_IDadosServidor" 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="524288"
              maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows" />
              </security>

            </binding>
            <binding name="BindPrototipo_IDepartamento" 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="524288"
              maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows" />
              </security>

            </binding>
            <binding name="BindPrototipo_IGeraCodigo" 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="524288"
              maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows" />
              </security>

            </binding>
          </netTcpBinding>
        </bindings>

    Eu define o mesmo bindig para todos os contratos, então por que os valores dos contratos estão indo para o cliente diferentes?

    Estou fazendo algo de errado?
    segunda-feira, 25 de janeiro de 2010 19:14

Todas as Respostas

  • Boas Marcio,

    É isso mesmo. Esses valores não são propagados para o cliente através do documento WSDL.

    As configurações são independentemente, e você tem que ajustar em ambos os lados de acordo com a sua necessidade.
    http://www.israelaece.com
    terça-feira, 26 de janeiro de 2010 00:32
    Moderador
  • Humm entendi mas tem como eu definir os valores para todos os contratos pois para cada contrato ele cria um binding e quando eu importo o servidor novamente na minha app. cliente, ele sobrepoe tudo novamente.
    terça-feira, 26 de janeiro de 2010 10:18
  • Boas Marcio,

    Não entendi. Por favor, explique melhor.
    http://www.israelaece.com
    terça-feira, 26 de janeiro de 2010 10:26
    Moderador
  • É que quando eu importo a referencia do servidor WCF no cliente, ele insere estas linhas no arquivo app.config:

    <system.serviceModel>
        <bindings>
          <netTcpBinding>
            <binding name="BindPrototipo_IDadosServidor" 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="524288"
              maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows" />
              </security>

            </binding>
            <binding name="BindPrototipo_IDepartamento" 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="524288"
              maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows" />
              </security>

            </binding>
            <binding name="BindPrototipo_IGeraCodigo" 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="524288"
              maxBufferSize="65536" maxConnections="10" maxReceivedMessageSize="65536">
              <readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
                maxBytesPerRead="4096" maxNameTableCharCount="16384" />
              <reliableSession ordered="true" inactivityTimeout="00:10:00"
                enabled="false" />
              <security mode="Transport">
                <transport clientCredentialType="Windows" protectionLevel="EncryptAndSign">
                  <extendedProtectionPolicy policyEnforcement="Never" />
                </transport>
                <message clientCredentialType="Windows" />
              </security>

            </binding>
          </netTcpBinding>
        </bindings>


    observe que para cada contrato... 

       <binding name="BindPrototipo_IDadosServidor" closeTimeout="00:01:00"
       <binding name="BindPrototipo_IDepartamento" closeTimeout="00:01:00"
       <binding name="BindPrototipo_IGeraCodigo" closeTimeout="00:01:00"

    ele cria uma configuração, então se eu quiser alterar as configurações eu tenho que mudar um por um. Eu queria saber se tem como eu definir uma configuração unica de binding para todos os contratos.

    quinta-feira, 28 de janeiro de 2010 16:16
  • Boas Marcio,

    Se todas as configurações são identicas, entao pode manter apenas uma e apontar para todos os endpoints a mesma configuração do binding.
    http://www.israelaece.com
    sábado, 30 de janeiro de 2010 19:18
    Moderador