0

更改 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();

    }

但我可以在wcfStormMaxReceivedMessageSize应用程序的帮助下轻松更改属性,在这种情况下,它确实被更改了。但重新启动服务后,一切都恢复到默认设置(例如 MaxReceivedMessageSize = 65536)。

请问,我做错了什么?如何编辑我的代码以更新新值?

4

1 回答 1

1

在SERVER SIDE上设置这些值不会自动在CLIENT SIDE上设置它们。

仅在服务器端设置它们是不够的 - 客户端和服务器之间的传输由客户端和服务器之间的两个设置中的最小者决定。即使服务器允许 2 GB 的消息大小,如果客户端仍然坚持 64 KB,则 64 KB 的较小值获胜。这并不意味着服务器端的 2 GB 设置不存在——它存在,但它不是有效的,因为客户端使用了较小的设置。

如果要在客户端使用相同的设置,则需要相应地配置客户端。在创建客户端代理或从 app.config 文件配置客户端时,您需要做同样的事情。

于 2009-12-19T12:29:06.057 回答