2013-07-10 5 views
0

У меня есть веб-служба WCF, которая размещается в .svc-файле ASP.NET. .svc содержит следующую конфигурацию:Конфигурация WCF для хоста .svc на ASP.NET

<%@ ServiceHost Language="C#" Debug="true" Service="assembly.IPriceListProvider, assembly" Factory="Autofac.Integration.Wcf.AutofacServiceHostFactory, Autofac.Integration.Wcf" %> 

web.config содержит конфигурацию WCF. Здесь идет конфигурация привязки:

<binding name="basicHttpBinding_PriceListProvider" maxBufferSize="10485760" 
    maxReceivedMessageSize="10485760"> 
    <readerQuotas maxArrayLength="16384000" /> 
</binding> 

Чтобы проверить обслуживание, я нажимаю на .svc-файл и нажимаю F5. Открывается тестовый клиент WCF. Но конфигурация изменилась. Значения, которые я явно определил, имеют значения по умолчанию:

<binding name="basicHttpBindingEndPoint_PriceListProvider" closeTimeout="00:01:00" 
       openTimeout="00:01:00" receiveTimeout="00:10:00" sendTimeout="00:01:00" 
       allowCookies="false" bypassProxyOnLocal="false" hostNameComparisonMode="StrongWildcard" 
       **maxBufferSize="65536"** maxBufferPoolSize="524288" **maxReceivedMessageSize="65536"** 
       messageEncoding="Text" textEncoding="utf-8" transferMode="Buffered" 
       useDefaultWebProxy="true"> 
       <readerQuotas maxDepth="32" maxStringContentLength="8192" **maxArrayLength="16384"** 
        maxBytesPerRead="4096" maxNameTableCharCount="16384" /> 
       <security mode="None"> 
        <transport clientCredentialType="None" proxyCredentialType="None" 
         realm="" /> 
        <message clientCredentialType="UserName" algorithmSuite="Default" /> 
       </security> 
      </binding> 

Почему изменяется конфигурация? Как сохранить исходные значения?

Я слышал что-то об упрощенной конфигурации .svc: привязка по умолчанию для .svc настроена, даже если вы не укажете ее явно в web.config. Может ли это так?

ответ

0

Значения maxBufferSize и maxReceivedMessageSize не распространяются на файл WSDL, который публикуется вашей службой. Поэтому тестовый клиент wcf не может получить их и принимает значения по умолчанию.

Вы все равно можете изменять значения с помощью SvcConfigEditor каждый раз, когда вы запускаете тестовый клиент wcf. Для этого выполните щелчок правой кнопкой мыши по файлу конфигурации в тестовом клиенте wcf и найдите привязки. Но изменения будут потеряны при следующем запуске клиента.

Вы также можете протестировать свою службу с помощью собственного клиента и установить там значения, как показано в следующем примере.

BasicHttpBinding binding= new BasicHttpBinding(); 
binding.MaxRecievedMessageSize = yourValue; 
EndpointAddress endpointAddress = new EndpointAddress("the address"); 

ClientForContract client= new ClientForContract (binding,endpointAddress); 
client.TheMethod(); 
client.Close(); 

Надеюсь, это поможет!

+0

Есть ли способ распространить конфигурацию моего сервера на клиента? –

+0

Мне жаль, что я не знаю, как использовать такие параметры конфигурации сервиса для конфигурации клиента. Я всегда устанавливаю значения программно на стороне клиента. –

 Смежные вопросы

  • Нет связанных вопросов^_^