我正在使用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开关中执行此操作。
答案 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
选项。