Estava com um problema no seguinte cenário:
Tenho um WCF, onde faço o "SelfHosting" por um Windows Service. Os dados doendereço eu coloco dinamicamente.
Os arquivos que eu iria enviar para o WCF passavam facilmente os 16Kb padrões da configuração.
Para isso utilizei o seguinte código para adicionar no endpoint que adicionei programaticamente (pelo código compilado, não pelo app.config)
var endpoint = serviceHostImport.AddServiceEndpoint(typeof(IImportFileService), MetadataExchangeBindings.CreateMexHttpBinding(), "mex"); Binding binding = endpoint.Binding; XmlDictionaryReaderQuotas quotas = new XmlDictionaryReaderQuotas(); quotas.MaxStringContentLength = int.MaxValue; quotas.MaxArrayLength = int.MaxValue; quotas.MaxBytesPerRead = int.MaxValue; quotas.MaxDepth = 64; quotas.MaxNameTableCharCount = int.MaxValue; binding.GetType().GetProperty("ReaderQuotas").SetValue(binding, quotas, null); serviceHostImport.Open();
Repare que a propriedade é adicionada via Reflection.
com isso é possível modificar programaticamente a propriedade ReaderQuotas do binding de um endpoint WCF para o máximo possível.
Abraços
Rafael
No comments:
Post a Comment