gpt4 book ai didi

WCF 服务引用支持文件未更新

转载 作者:行者123 更新时间:2023-12-04 16:11:27 27 4
gpt4 key购买 nike

我有一个 VS 2010 解决方案,其中包含一个 WCF 服务项目和一个单元测试项目。单元测试项目具有对 WCF 服务的服务引用。

WCF 服务项目的 Web.config 将许多绑定(bind)属性设置为非默认值:

web.config:(具体注意maxBufferSize="20000000")

<basicHttpBinding>
<binding name="basicHttpBindingConfig" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
</basicHttpBinding>

检查时 this issue ,我开始意识到单元测试项目的服务引用支持文件不包含我期望的值(即在 WCF 服务的 web.config 中配置的值):

configuration.svcinfo:(特别注意maxBufferSize="65536")

  <binding hostNameComparisonMode="StrongWildcard" maxBufferSize="65536" messageEncoding="Text" name="BasicHttpBinding_IBishopService" textEncoding="utf-8" transferMode="Buffered">
<readerQuotas maxArrayLength="16384" maxBytesPerRead="4096" maxDepth="32" maxNameTableCharCount="16384" maxStringContentLength="8192" />
<security mode="None">
<message algorithmSuite="Default" clientCredentialType="UserName" />
<transport clientCredentialType="None" proxyCredentialType="None" realm="" />
</security>
</binding>

删除并重新创建服务引用或更新服务引用会重新创建文件,但我仍然得到相同的值。

为什么?

更新

这是客户端的app.config

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

最佳答案

同样的问题,在配置文件搞乱半天后没有解决方案...更改自动生成的文件通常是不受欢迎的,所以我的感觉是“必须有更好的方法,丹尼斯”。

更新:我通过删除绑定(bind)配置中的名称属性解决了我的问题。所以你当前的 web.config 看起来像这样

<basicHttpBinding>
<binding name="basicHttpBindingConfig" maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
</basicHttpBinding>

会变成

<basicHttpBinding>
<binding maxReceivedMessageSize="20000000" maxBufferSize="20000000" maxBufferPoolSize="20000000">
<readerQuotas maxDepth="32" maxArrayLength="200000000" maxStringContentLength="200000000"/>
<security mode="TransportCredentialOnly">
<transport clientCredentialType="Ntlm"/>
</security>
</binding>
</basicHttpBinding>

我认为您只需要在客户端执行此操作。据我所知,通过删除 name 属性,您实际上更改了应用程序的默认 basicHttpBinding 配置。此解决方案的学分 here .

另一个更新:如果您正确命名您的服务配置(包括命名空间),它将选择绑定(bind)配置。所以不是

<service name="ServiceName">

你需要

<service name="My.Namespace.ServiceName">

关于WCF 服务引用支持文件未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7536550/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com