Настройки привязки конечной точки WCF не обновляются - PullRequest
0 голосов
/ 19 декабря 2009

Все попытки изменить параметры конфигурации конечной точки автономной службы WCF завершаются неудачей:

public void Start()
    {
        BasicHttpBinding binding = new BasicHttpBinding();
        binding.Name = "NAVBinding";
//--------------------START editing-------------------------------
        TimeSpan interval = new TimeSpan(1, 50, 00); // all these following (inbetween comments) lines have no effect
        binding.MaxReceivedMessageSize = 2147483647;
        binding.MaxBufferSize = 2147483647;
        binding.ReceiveTimeout = interval;
        binding.OpenTimeout = interval;
        binding.CloseTimeout = interval;
        binding.SendTimeout = interval;
        XmlDictionaryReaderQuotas readerQuotas = new XmlDictionaryReaderQuotas();
        readerQuotas.MaxDepth = 2147483647;
        readerQuotas.MaxStringContentLength = 2147483647;
        readerQuotas.MaxArrayLength = 2147483647;
        readerQuotas.MaxBytesPerRead = 2147483647;
        readerQuotas.MaxNameTableCharCount = 2147483647;
        binding.ReaderQuotas = readerQuotas;
//----------------------END editing---------------------------
        binding.HostNameComparisonMode = HostNameComparisonMode.StrongWildcard;
        Uri baseAddress = new Uri("http://localhost:8000/nav/customer");
        Customer_Service service = new Customer_Service();
        serviceHost = new ServiceHost(service, baseAddress);
        serviceHost.AddServiceEndpoint(typeof(ICustomer_Service), binding, baseAddress);
        OpenMetadataExchange(baseAddress);
        service.navEventListner = this;
        serviceHost.Open();

    }

но я легко могу изменить свойство MaxReceivedMessageSize с помощью приложения wcfStorm , и в этом случае оно действительно изменяется. Но после перезапуска службы все возвращается к настройкам по умолчанию (например, MaxReceivedMessageSize = 65536).

Пожалуйста, что я делаю, почему? Как редактировать мой код, чтобы новые значения обновлялись?

1 Ответ

1 голос
/ 19 декабря 2009

Установка этих значений на СТОРОННЯЯ СТОРОНА не устанавливает их автоматически на СТОРОНЕ КЛИЕНТА .

Недостаточно только их установки на стороне сервера - передача между клиентом и сервером продиктована наименьшей из двух настроек между клиентом и сервером. Даже если сервер допускает 2 ГБ размера сообщения, если клиент по-прежнему настаивает на 64 КБ, выигрывает меньшее значение - 64 КБ. Это не означает, что настройки 2 ГБ на стороне сервера нет - она ​​есть, но она неэффективна, поскольку клиент использует меньшую настройку.

Если вы хотите использовать те же настройки на стороне клиента, вам необходимо соответствующим образом настроить клиентскую сторону. Вам нужно будет сделать то же самое при создании прокси-клиента или настроить клиент из файла app.config.

...