勇哥注:这是一个比较容易忘记的点,特别是使用wcf配置工具的时候。
Service的name并不是随便命名的。
<services> <service name="Services.CalculatorService"> <endpoint address="http://127.0.0.1:9999/calculatorservice" binding="basicHttpBinding" bindingConfiguration="" contract="Contracts.ICalculator" /> </service> </services>
它必须是你的契约ICalculator的实现类的名字,而且必须带上命名空间。
这一点经常忘记。
(图1)
使用wcf配置工具的“新建服务”时。
向导第1页要你填服务类型,其实是要你填Service Name的。
这个地方经常搞错,有些误导人。
我们按图1的解决方案,用向导来创建一次服务:
第1步:
这里填Service name。它是你的契约ICalculator的实现类的名字,而且必须带上命名空间。
不理会这个警告,点是。
第2步:
服务约定,就是ABC三要素中的C(服务契约),这个好懂。
第3步:
ABC三要素中的B(binding)
基本web就是BasicHttpBinding
高级的就WS开头的,WSHttpBinding。
第4步:
ABC三要素中的A(Address)
保存后,C#的app.config就会刷新出新增的服务配置:
注意service name, contract 的值,如果写错了、或者是没带命名空间,都会给你打波浪线的。
<services> <service name="Services.CalculatorService"> <endpoint address="http://127.0.0.1:9999/calculatorservice" binding="basicHttpBinding" bindingConfiguration="" contract="Contracts.ICalculator" /> </service> </services>

