Гм ... Я должен добавить это как комментарий, но, очевидно, мой мозг просто вышел из глубины, и я больше не могу найти ссылку для ответа на комментарии :( (Грустный мозг) Anyhoo, я был удивлен вашим утверждениемчто M $ не поддерживает настройку конфигурации wcf из кода, пока я не прочту ссылку - я бы сказал, что их намерения состоят в том, чтобы эти файлы конфигурации были предпочтительнее кода конфигурации , который жестко задан в коде . Когда приходят значения привязкииз динамической конфигурации SW, конфигурация кода намного лучше, чем конфигурация файла. Вот мой код для создания базовой привязки http, с или без ssl:
public static BasicHttpBinding GetBinding(string Url, int timeoutSeconds)
{
BasicHttpBinding binding = null;
UriBuilder urb = new UriBuilder(Url);
switch (urb.Scheme)
{
case "http":
binding = new BasicHttpBinding(BasicHttpSecurityMode.None);
break;
case "https":
binding = new BasicHttpBinding(BasicHttpSecurityMode.Transport);
break;
default:
throw new ArgumentException("unknown scheme : " + urb.Scheme);
}
binding.ReaderQuotas.MaxStringContentLength = int.MaxValue;
binding.MaxBufferPoolSize = int.MaxValue;
binding.MaxReceivedMessageSize = int.MaxValue;
binding.MaxBufferSize = int.MaxValue;
if (timeoutSeconds > 0)
binding.SendTimeout = TimeSpan.FromSeconds(timeoutSeconds);
return binding;
}
, вызывающая сторона вызывает
EndpointAddress addr = new EndpointAddress(url);
Binding bind = DataProviderUtilities.GetBinding(_url, timeOutSeconds);
yourserviceClient foo = new yourServiceClient(addr, bind);