2011-10-12 3 views
3

svcutil을 사용하여 소비하는 서비스에 대해 사용할 프록시 파일을 생성하고 있습니다. 현재 서비스가 변경되면 언제든지 프록시 파일을 재생성 할 수있는 배치 파일이 있습니다. 그러나 프록시 파일 생성 후 바인딩에 대해 항상 약간의 값을 조정해야합니다. 필요한 변경 사항의 예로 maxbuffersize, maxreceivedmessagesize 및 sendtimeout이 있습니다.svcutil을 사용하여 바인딩의 특정 값 조정

생성 프로세스의 일부로 이러한 값을 조정하는 스위치가 있습니까? 아니면 생성 된 클라이언트의 사후 처리를 통해 스위치를 수행해야합니까?

감사합니다.

편집 :

"C : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \ v7.0a \ bin에 svcutil.exe에 \" /TCV : Version35 /config:Proxy.config/t : 코드 https://myserviceprovider.com/Webservices/FirstService.svc?wsdl /out:FirstServiceClient.cs /namespace:"http://FirstService/services/","MyServices.FirstService "

"C : \ 프로그램 파일 \은 Microsoft SDKs \ 윈도우 \의 v7.0a의 \ bin \ SvcUtil.exe " /tcv : Version35 /config:Proxy.config/t : 코드,314,960,453,210 https://myserviceprovider.com/Webservices/SecondService.svc?wsdl /out:SecondServiceClient.cs/mergeConfig /namespace:"http://SecondService/services/","MyServices.SecondService " ... 상기 예에 따라서

, 제 문은 Proxy.config 파일을 만들고 두 번째 명령은/merge를 사용하여 두 번째 statment에 의해 생성 된 내용을 첫 번째 명령과 병합합니다. 실제로 이것 이후에 몇 가지 다른 명령이 있으며 Proxy.config 파일로 끝나서 webservice에 연결할 수 있습니다. 문제는 생성 된 Proxy.Config에 다음과 같은 몇 가지 예제 바인딩이 있다는 것입니다. 위의 XML 조각에서
   <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> 

, 나는 이미 해당 MaxBufferSize 및 maxReceivedMessageSize를 조정했지만 그것이는 svcutil 스위치의 일환으로이 작업을 수행 할 수 있다면 나는 알고 싶어 할 것입니다.

답변

2

당신은 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 크기는 작은 오류 또는 maxNameTableCharCount 크기 오류 증가로 나타날 수 있습니다. 프록시를 만들려면 설정을 트위 킹해야 할 수도 있습니다. SvcUtil.exe 및 SvcUtil.exe.config 파일을 Temp 폴더에 복사하고 거기에서 실행하는 것이 좋습니다. 그런 다음 사용자의 필요에 맞게 SvcUtil.exe.config를 수정할 수 있습니다.

+0

이것은 정말로 유망 해 보입니다. 나는 기회가있을 때마다 살펴볼 것입니다. –

+1

제공된 링크가 죽었습니다. [Web.archive 버전] (https://web.archive.org/web/20120210090509/http://enterpriseframework.com/post/2009/04/09/Using-a-External-Configuration-file-for-SvcUtilexe -to-generate-a-WCF-Service-Proxy.aspx) –

0

MSDN ServiceModel Metadata Utility Tool Reference에 따르면 svcutil을 호출 할 때 /noConfig 옵션을 사용할 수 있어야 구성이 생성되지 않습니다. 구성을 생성해야하는 경우 /mergeConfig 옵션을 사용해보십시오. 이 게시물에서 입증 된 바와 같이

+0

이 시점에서/config 스위치를 사용하여 출력 파일을 정의하고 있습니다. 내 배치 파일에서 생성 된 일부 명령 예제를 사용하여 내 질문을 편집하여 내 용도를 표시합니다. –

+0

하지만 매회 구성을 재생성해야합니까? 당신이 고정되어 있고, 생성되지 않았 으면하는 것처럼 들린다. –

+0

우리가 소비하는 서비스는 아직 개발 중이며 (늦은 단계 임에도 불구하고) 때때로 변경됩니다. 따라서 때때로 프록시를 다시 생성해야합니다. 모든 단계를 자동화하고 수동 개입을 제거하려는 시도에서 우리는 변경 사항과 함께 생성 작업을 수행하는 일괄 처리 스크립트를 간단히 갖고 싶어했습니다. 나는 포스트 세대를 대체하는 검색쪽으로 기대고있다. –