我有以下WCF客户端代码:
string add = String.Format("http://localhost:{0}/ServiceRequestRest",accessPort);
var cf = new ChannelFactory<IServiceRequestRest>(new WebHttpBinding(), add);
cf.Endpoint.Behaviors.Add(new WebHttpBehavior());
busService = cf.CreateChannel();
busService.DoMyStuff("hello",null);
当我激活“第一次机会异常中断”时,最后一行代码会抛出一系列异常。第一个例外是:
System.InvalidOperationException occurred Message="Envelope Version 'EnvelopeNone (http://schemas.microsoft.com/ws/2005/05/envelope/none)' does not support adding Message Headers." Source="System.ServiceModel" StackTrace: at System.ServiceModel.Channels.MessageHeaders.ValidateHeaderKind(HeaderKind headerKind)
我不知道我正在尝试“添加消息标题”,但我选择继续执行并立即获得下一个异常:
System.Net.WebException occurred Message="The underlying connection was closed: The connection was closed unexpectedly." Source="System" StackTrace: at System.Net.HttpWebRequest.GetResponse()
尽管如此,我很难理解问题所在。有线索吗?
更新:我从another site获悉,无法序列化我的REST调用的返回类型。仅这一点可能会导致这个问题,但在我修复之后我仍然遇到了同样的问题。当我使用常规catch块进行异常时,我得到的是“连接意外关闭”。我还能错过什么?
Update2 :我想我找到了最后的问题。我得到了interference from Skype。代码现在正在运行。 :)
答案 0 :(得分:0)
我看到的主要问题是您正在尝试使用WCF通道使用WebHttpBinding进行通信。
恕我直言,WebHttpBinding的全部目的是让客户端不必使用WCF堆栈与之通信。您只需使用任何HTTP堆栈来发出请求。