按照网上的例子,创建ServiceUitl类,结合配置文件,动态创建WCF Client。但在调试时,每当运行到Reference.EndGet***()方法时,弹出异常“Not Found”。但该WCF服务以引用的方式是可以用的。也添加了跨域文件。使用HttpWatch跟踪,发现每当请求*.svc时,总是返回415错误
查了很久才得到提示,原来是服务端发布的WCF服务的binding是cutomBinding(系统默认创建),而动态创建WCF Client的类的Binding是basicHttpBinding,二者不一致从而导致调用失败。
最终,通过修改服务器端的WCF配置文件,将Binding方式由customBinding改为basicHttpBinding,并删去多余的参数解决该问题
<services>
<service name="MonitorClient.Web.WcfService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
contract="MonitorClient.Web.WcfService" />
</service>
</services>
<service name="MonitorClient.Web.WcfService">
<endpoint address="" binding="basicHttpBinding" bindingConfiguration=""
contract="MonitorClient.Web.WcfService" />
</service>
</services>