【发布时间】:2011-01-10 16:51:56
【问题描述】:
我有我的 WCF 服务,我从 MSTest 项目创建了对它的引用。这是我如何调用服务方法的示例:
IEnrollmentService serviceClient = ChannelFactory<IEnrollmentService>
.CreateChannel(new BasicHttpBinding(),
new EndpointAddress("http://localhost/EnrollmentService.svc"));
PublishResult res = serviceClient.PublishEnrollmentProfile(...);
我得到了以下错误,而不是执行:
内容类型application/xml; 响应消息的charset=utf-8 与内容类型不匹配 绑定(文本/xml;字符集=utf-8)。如果 使用自定义编码器,请确保 IsContentTypeSupported 方法是 正确实施。第一个710 响应的字节为:'
Sendera:ActionNotSupported消息 操作 '' 无法在 接收者,由于 ContractFilter EndpointDispatcher 不匹配。 这可能是因为 合同不匹配(不匹配的操作 发送者和接收者之间)或 之间的绑定/安全不匹配 发送者和接收者。检查 发送者和接收者具有相同的 合同和相同的约束力 (包括安全要求,例如 消息,传输, 没有)。'。 ---> System.Net.WebException:远程 服务器返回错误:(500) 内部服务器错误..
据我了解,ContractFilter 和 EndpointDispatcher 之间存在一些问题。我尝试过goodgle,但没有发现任何可以理解的......
我也尝试过以另一种方式调用 wcf 服务方法:
EnrollmentServiceClient serviceClient = new EnrollmentServiceClient("http://localhost/EnrollmentService.svc");
PublishResult res = serviceClient.PublishEnrollmentProfile(...);
这又返回了一个错误:
找不到端点元素 姓名 'http://localhost/McActivation/EnrollmentService.svc' 和合同 'EnrollmentServiceReference.IEnrollmentService' 在 ServiceModel 客户端 配置部分。这可能是 因为没有配置文件 为您的应用程序找到了,或者因为 没有与此名称匹配的端点元素 可以在客户端元素中找到..
问题1:
实例化 wcf 服务客户端的正确方法是什么?
问题2:
我的情况有什么问题?
非常感谢。
附:对于一些问题,我可以使用 WcfTestClient 连接到服务,这里有更多详细信息: WCF service: Can't call methods through the 'WebHttpBinding' endpoint
附言这是服务器端 WCF 服务配置:
<system.serviceModel>
<services>
<service name="McActivationApp.EnrollmentService" behaviorConfiguration="McActivationApp.EnrollmentServicBehavior">
<endpoint address="" binding="webHttpBinding" contract="McActivationApp.IEnrollmentService"/>
<endpoint address="mex" binding="mexHttpBinding" contract="McActivationApp.IEnrollmentService" />
</service>
</services>
<behaviors>
<serviceBehaviors>
<behavior name="McActivationApp.EnrollmentServicBehavior">
<serviceMetadata httpGetEnabled="True"/>
<serviceDebug includeExceptionDetailInFaults="False" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment aspNetCompatibilityEnabled="true" />
</system.serviceModel>
【问题讨论】:
-
不知道你的服务配置很难说。
-
你能连接 wcf 测试客户端吗? msdn.microsoft.com/en-us/library/bb552364.aspx
-
在这种情况下,我喜欢从一个工作示例开始,对我的应用程序进行逆向工程,直到它开始工作。这是来自 MSDN msdn.microsoft.com/en-us/library/dd936243.aspx 的示例应用程序
标签: .net wcf wcfserviceclient