您正在尝试在我的Windows应用程序中调用WCF服务
我将服务引用添加到我的项目中,但在执行以下错误时发生:
这很可能是因为这个动作 'http://tempuri.org/IUser/SaveUser'不正确或因为 message包含无效或过期的安全上下文令牌或 因为绑定之间存在不匹配。安全上下文 如果服务中止了该通道,则令牌将无效 闲置。防止服务中止空闲会话 过早增加服务端点上的接收超时 结合。
我尝试增加服务端点绑定的接收超时。但同样的例外是存在的。
以下是config file on client
<configuration>
<system.serviceModel>
<bindings>
<wsHttpBinding>
<binding name="WSHttpBinding_IUser" closeTimeout="00:01:00" openTimeout="00:01:00"
receiveTimeout="00:30:00" sendTimeout="00:01:00" bypassProxyOnLocal="false"
transactionFlow="false" hostNameComparisonMode="StrongWildcard"
maxBufferPoolSize="524288" maxReceivedMessageSize="65536"
messageEncoding="Text" textEncoding="utf-8" useDefaultWebProxy="true"
allowCookies="false">
<readerQuotas maxDepth="32" maxStringContentLength="8192" maxArrayLength="16384"
maxBytesPerRead="4096" maxNameTableCharCount="16384" />
<reliableSession ordered="true" inactivityTimeout="00:45:00"
enabled="false" />
<security mode="None">
<transport clientCredentialType="None" />
</security>
</binding>
</wsHttpBinding>
</bindings>
<client>
<endpoint address="http://t2.ipixsolutions.net/Service.svc" binding="wsHttpBinding"
bindingConfiguration="WSHttpBinding_IUser" contract="ServiceReference1.IUser"
name="WSHttpBinding_IUser">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
</client>
</system.serviceModel>
</configuration>
在服务器上配置
<system.serviceModel>
<services>
<service behaviorConfiguration="ServiceBehavior" name="WCFLibrary.Users">
<endpoint address="" binding="wsHttpBinding" contract="WCFLibrary.IUser">
<identity>
<dns value="localhost"/>
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="ServiceBehavior">
<!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
<serviceMetadata httpGetEnabled="true"/>
<!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information -->
<serviceDebug includeExceptionDetailInFaults="false"/>
</behavior>
</serviceBehaviors>
</behaviors>
</system.serviceModel>
答案 0 :(得分:2)
嘿,我得到了同样的异常,在我的情况下,这是因为这个设置:
<security mode="None">
如果我将其更改为:
<security mode="Message">
工作正常。我想它必须从默认值中选取,因为我没有在服务器端设置它。
答案 1 :(得分:0)
我遇到了同样的问题,并使用以下
修改了安全元素 <security mode="Message">
<transport clientCredentialType="Ntlm" proxyCredentialType="Ntlm"
realm="" />
<message clientCredentialType="Windows" algorithmSuite="Default" />
</security>
答案 2 :(得分:0)
也许这会对某人有所帮助。我在客户的PC上弹出了同样的错误。应用程序将无法在10次登录我们的服务器9。这适用于过去非常好的WCF客户端。罪魁祸首原来是一个广告软件应用程序,他必须意外安装另一个软件。它会在http流中添加一些内容,这会搞砸我们的沟通。有问题的广告软件是RocketTab(http://malwaretips.com/blogs/rockettab-virus-removal/)。
我们解决这个问题的方法是注意到如果我们在他的PC上使用不同的Windows用户,问题就不会发生。然后我们使用任务管理器关闭他的PC上看起来不重要的进程,并发现当我们关闭client.exe进程时,我们的应用程序开始工作。这导致我们使用RocketTab(他们的可执行文件是client.exe)。