configuração de ligação do @WCF se aplica apenas como padrão, mas como nomeada, ela falha
Temos um problema interessante com o modo de ligação e transferência de fluxo WCF que não podemos resolver:
Temos um ponto de extremidade WCF configurado para o modo de transferência de streaming. O terminal recebe uma mensagem muito maior que o tamanho padrão (~ 65 KB). Portanto, especificamos um tamanho de mensagem maior no atributo maxReceivedMessageSize na marca de ligação.
O problema é quando emparelhamos o ponto final e a ligação pelo bindingConfigurationtributo @ no endpoint e onomtributo @ noobrigatóri, recebemos o seguinte erro: "O servidor remoto retornou um erro: (400) Solicitação incorreta".
Assim que removermos os dois atributos bindingConfiguration enom funciona sem erro.
Aqui está a definição do serviço endpoint:
<service name="Services.DocumentService" behaviorConfiguration="ServiceBehavior">
<endpoint contract="ServiceContracts.IDocumentService" address="DocumentService"
binding="basicHttpBinding" name="basicHttpBinding"
bindingConfiguration="BindingConfiguration" <---- when this goes away
behaviorConfiguration="ServiceEndpointBehavior"/>
<host>
<baseAddresses>
<add baseAddress="http://localhost:8080/Documents/"/>
</baseAddresses>
</host>
</service>
Aqui está obinding configuration:
<binding
name="BindingConfiguration" <---- and when this goes away
transferMode="Streamed" maxReceivedMessageSize="2147483647" >
<readerQuotas maxDepth="2147483647" maxStringContentLength="2147483647"
maxArrayLength="2147483647" maxBytesPerRead="2147483647"
maxNameTableCharCount="2147483647" />
</binding>
Então funciona apenas como ligação padrão (sem chave explicitamente nomeada). O estranho é que conseguimos verificar, refletindo no host de serviço, que a configuração de ligação está realmente aplicada (o maxReceivedMessageSize foi definido corretamente) nos dois cenários. Poderia ser um bug no WCF?
O serviço é auto-hospedado.
Alguma idéia é muito apreciada?