当用户在代理后面时,从客户端应用程序访问WCF服务

时间:2011-02-17 19:22:22

标签: c# winforms proxy wcf

我在服务器上托管了WCF服务。客户端应用程序正在Windows 7计算机上访问该服务。 Windows 7计算机上有两个用户。 Windows应用程序是通过Clickonce安装的,因此两个用户可以使用单独的实例。

当userA通过Winforms应用程序访问服务时,它可以正常工作,但是当同一台机器上的userB尝试访问它时会抛出以下异常: 通信异常:远程服务器返回意外响应:(417)期望失败。

Server stack trace: 
   at System.ServiceModel.Channels.HttpChannelUtilities.ValidateRequestReplyResponse(HttpWebRequest request, HttpWebResponse response, HttpChannelFactory factory, WebException responseException, ChannelBinding channelBinding)
   at System.ServiceModel.Channels.HttpChannelFactory.HttpRequestChannel.HttpChannelRequest.WaitForReply(TimeSpan timeout)
   at System.ServiceModel.Channels.RequestChannel.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Dispatcher.RequestChannelBinder.Request(Message message, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs, TimeSpan timeout)
   at System.ServiceModel.Channels.ServiceChannel.Call(String action, Boolean oneway, ProxyOperationRuntime operation, Object[] ins, Object[] outs)
   at System.ServiceModel.Channels.ServiceChannelProxy.InvokeService(IMethodCallMessage methodCall, ProxyOperationRuntime operation)
   at System.ServiceModel.Channels.ServiceChannelProxy.Invoke(IMessage message)

Exception rethrown at [0]: 
   at System.Runtime.Remoting.Proxies.RealProxy.HandleReturnMessage(IMessage reqMsg, IMessage retMsg)
   at System.Runtime.Remoting.Proxies.RealProxy.PrivateInvoke(MessageData& msgData, Int32 type)
   at Myapp.ServiceProxy.IMyAPIService.GetData(String userName, String passWord)

为一个用户而不是其他用户工作的原因是什么?我错过了什么吗?

更新: 虽然我找到了解决此问题的解决方案(请参阅下面的答案),但仍想知道在这种情况下应该做些什么。正如MSDN article所说它阻止用户向服务器发送大量数据,但它没有提到任何限制吗?

客户端可以发送到服务器的数据限制是多少?有没有更好的方法来连接来自代理服务器后面的客户端的WCF服务?

1 个答案:

答案 0 :(得分:10)

最后我破解了它。这是因为用户在代理后面。

在app.config中进行设置后解决了问题:

<system.net>
   <settings>
      <servicePointManager expect100Continue="false" />
   </settings>
</system.net>

但这仍然是大文件上传的问题,现在正在寻找相同的解决方案。

有关此问题的更多信息,请访问MSDN article