Использование svcutil для настройки определенных значений в привязках - PullRequest
3 голосов
/ 12 октября 2011

Я использую svcutil для генерации прокси-файла для использования с сервисом, который мы используем.В настоящее время у меня есть пакетный файл, который мы можем запустить в любое время для регенерации прокси-файла в случае изменения службы.Однако мне всегда приходится корректировать несколько значений привязок после генерации прокси-файла.Вот некоторые примеры изменений, которые мне нужно сделать: maxbuffersize, maxreceivedmessagesize и sendtimeout.

Существуют ли какие-либо переключатели для настройки этих значений в процессе генерации или это необходимо сделать с помощью постобработки сгенерированного клиента?

Спасибо.

Редактировать:

"C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0a \ bin \ SvcUtil.exe" / tcv: Version35 /config:Proxy.config / t: code https://myserviceprovider.com/Webservices/FirstService.svc?wsdl /out:FirstServiceClient.cs / namespace: "http://FirstService/services/","MyServices.FirstService"

" C: \ Program Files \ Microsoft SDKs \ Windows \ v7.0a \ bin \ SvcUtil.exe "/ tcv: версия35/config:Proxy.config / t: code
https://myserviceprovider.com/Webservices/SecondService.svc?wsdl /out:SecondServiceClient.cs / mergeConfig / namespace: "http://SecondService/services/","MyServices.SecondService" ...

Так в приведенном вышеНапример, первый оператор создает файл Proxy.config, а вторая команда использует / merge, чтобы объединить то, что генерируется вторым определением, с первым.На самом деле после них есть несколько других команд, и я получаю файл Proxy.config, который позволяет мне подключаться к веб-сервису.Проблема в том, что сгенерированный Proxy.Config имеет несколько примеров привязок, таких как:

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

В приведенном выше фрагменте XML я уже настроил maxBufferSize и maxReceivedMessageSize, но я бы хотел знать,это можно было сделать как часть переключателя svcutil.

Ответы [ 2 ]

2 голосов
/ 24 октября 2011

Вам необходимо настроить svcutil.exe.config, как показано в этом посте: http://enterpriseframework.com/post/2009/04/09/Using-a-External-Configuration-file-for-SvcUtilexe-to-generate-a-WCF-Service-Proxy.aspx

Вы можете столкнуться с ситуацией, когда служба, для которой вы пытаетесь создать прокси,очень большой, и вы можете получить maxStringContentLength size для небольших ошибок или увеличения ошибок размера maxNameTableCharCount.Возможно, вам придется настроить параметры для создания прокси.Я рекомендую скопировать файл SvcUtil.exe и SvcUtil.exe.config в папку Temp и просто запустить его оттуда.Затем вы можете изменить SvcUtil.exe.config по своему усмотрению.

0 голосов
/ 12 октября 2011

В соответствии с MSDN Справочник служебных программ метаданных ServiceModel , вы должны иметь возможность использовать опцию /noConfig при вызове svcutil, чтобы не создавать конфигурацию.Если вам нужно сгенерировать некоторую конфигурацию, вы можете попробовать /mergeConfig option.

...