当前位置: 首页 > 编程语言 > C#

WCFWeb服务报错:“服务端点绑定不使用HTTP协议”?

时间:2023-04-11 02:48:36 C#

WCFWeb服务错误:“服务端点绑定不使用HTTP协议”?我有一个简单的WCF服务,在我的开发机器上测试时工作正常。现在,我已将Web服务移至Web服务器,并在http://mydomain.com:8005上运行该服务(在调试模式下)。打开Web浏览器访问该URL会显示预期的服务页面,如果我在我正在调用的界面内的服务器上放置一个断点,它会命中断点并返回预期的数据......但在客户端它返回以下错误:接收http://mydomain.com:8005/的HTTP响应时出错。这可能是由于服务端点绑定未使用HTTP协议。也可能是由于服务器中止了HTTP请求上下文(可能是由于服务关闭)。有关详细信息,请参阅服务器日志。更多线索:接口签名为:IEnumerableGetThings(outstringerrMsg);其中MyClass被定义为Serializable并且定义在客户端和服务器之间是相同的。知道我需要翻转什么秘密开关吗?WCF还需要有用于传递数据的具体类(因为它都需要是XML序列化的,并且必须能够在XML模式中表示——接口不太适合)。我相信它不能返回IEnumerable-尝试使用List(或T[]数组)或具体类型。运气好吗?我遇到了同样的问题,因为我从服务器返回了大量记录,所以我将以下行添加到我的wcf配置文件中并且它起作用了。不要将MyClass定义为Serializable。将其标记为[DataContract]并将其属性标记为[DataMember]。如果你不能,那么......我想我也看到了这个问题。编辑尽管[Serializable]本身并没有什么阻塞会导致序列化处理的可能性超过它可以处理的范围。编辑2Marc_s的评论是正确的晚会,但我得到了同样的错误。事实证明,您不能对数据协定成员使用抽象类。我必须使用以下内容:[DataContract]publicclassMyClass{[DataMember]publicAMyProperty{get;放;}}[DataContract][KnownType(typeof(B))][KnownType(typeof(C))]publicclassA{}[DataContract]publicclassB:A{}[DataContract]publicclassC:A{}对于WCF能够序列化像varmyClass=newMyClass();这样的东西myClass.MyProperty=newB();如果在您之前的表格中进行任何更改并且您的实体未更新后更新您的实体时也会发生此错误我只是将它留在这里以防有人需要它。我遇到了同样的错误。我正在调用我的服务,该服务的服务类型为Dictionary,其键/值对的字符串值设置为null。我更改了代码以确保没有空值并且它有效只是面临完全相同的问题,但这是由于安全协议类型被硬编码为TLS1.2,而该服务被部署到没有R2(32位)的2008服务器引导,意思是不可升级到R2)。对于其他人来说,这是一个不太可能发生的情况,但我想我会提到它。如果有人遇到同样的情况并且有这样一行代码,你知道为什么你现在会收到错误:System.Net.ServicePointManager.SecurityProtocol=System.Net.SecurityProtocolType.Tls12;我有同样的问题。这就是EndpointAddress的端口地址问题。在VisualStudio中,文件(例如Service1.svc)的端口地址和wcf项目的端口地址必须与您在EndpointAddress中的相同。让我详细描述这个解决方案。检查端口地址是一个两步过程。在您的WCF项目中右键单击您的服务文件(例如Service1.svc)->然后在您的浏览器中选择在浏览器中查看您的url是http://localhost:61122/Service1.svc,现在记下您的端口地址作为61122右键单击??您的wcf项目->选择属性->转到Web选项卡->现在服务器部分->选择使用visualstudio开发服务器->选择特定端口并提供我们之前从Service1找到的端口地址。服务svc。即(61122)。早些时候我有不同的端口地址。正确指定端口地址后,我给了端点地址,我的问题就解决了。我希望这能解决你的问题。以上就是C#学习教程:WCFWeb服务报错:“服务端点绑定不使用HTTP协议”?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: