使用svcutil调整绑定的特定值

时间:2011-10-12 05:20:47

标签: wcf svcutil.exe

我正在使用svcutil生成一个代理文件,用于对付我们使用的服务。目前,我有一个批处理文件,我们可以随时运行以在服务更改时重新生成代理文件。但是,在代理文件生成之后,我总是必须在绑定上调整一些值。我需要做的更改的一些示例是maxbuffersize,maxreceivedmessagesize和sendtimeout。

是否有任何开关可以在生成过程中调整这些值,还是需要通过生成客户端的后期处理来完成?

感谢。

修改

  

“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0a \ bin \ SvcUtil.exe”   / tcv:Version35 /config:Proxy.config / t:代码   https://myserviceprovider.com/Webservices/FirstService.svc?wsdl   /out:FirstServiceClient.cs   /名称空间: “HTTP:// FirstService /服务/”, “MyServices.FirstService”

     

“C:\ Program Files \ Microsoft SDKs \ Windows \ v7.0a \ bin \ SvcUtil.exe”   / tcv:Version35 /config:Proxy.config / t:代码
  https://myserviceprovider.com/Webservices/SecondService.svc?wsdl   /out:SecondServiceClient.cs / mergeConfig   /namespace:"http://SecondService/services/","MyServices.SecondService”   ...

因此在上面的示例中,第一个语句创建Proxy.config文件,第二个命令使用/ merge将第二个语句生成的内容与第一个语句合并。实际上在这之后还有一些其他命令,我最终得到一个Proxy.config文件,允许我连接webservice。问题是,生成的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 个答案:

答案 0 :(得分: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以满足您的需要。

答案 1 :(得分:0)

根据MSDN ServiceModel Metadata Utility Tool Reference,您应该能够在调用/noConfig时使用svcutil选项,以便不会生成任何配置。如果您需要生成某些配置,可能需要尝试/mergeConfig选项。