最近在公司没什么事,就 打算看看 WCF方面的知识,当然肯定是要自己动手操作的啦。
WCF给我第一个感觉就是配置起来有点麻烦,而且稍微没配置好就导致不能访问(还是WebService好啊。。哈哈)。不过 wcf既然是
整合了 .net remoting/webservice 等通讯技术,配置麻烦那也是应该的了。。。
在网上搜索了一些文章看了以后,大概知道 配置文件中的 ABC(a:address b:binding c:contract)。
下面根据vs2010的模板新建了第一个wcf的程序,大部分我们使用wcf估计是用web来调用,所以F5以后,就迫不及待的在地址栏上向调用 webservice一样,
结果傻眼了,调用方法没反映的嘛。。。晕,咋回事啊。。。原来这就需要配置啦,配置不同的调用方法。。
1、首先在 IService1.cs中的方法上加上 [WebGet] 属性(该属性是在 System.ServiceModel.Web 下,所以需要引用 System.ServiceModel.Web这个dll的)
[WebGet]
string GetData( int value);
2、修改web.config 配置文件中
a、将默认的 第一个 endpoint 中的 binding 中的值改成 "webHttpBinding"
b、在behaviors中定义一个 behavior 起名字:wb
< behaviors >
<endpointBehaviors>
<behavior name="wb">
<webHttp/>
</behavior>
</endpointBehaviors>
< serviceBehaviors >
< behavior name = " WcfService2.Service1Behavior " >
<!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false 并删除上面的元数据终结点 -->
< serviceMetadata httpGetEnabled = " True " httpsGetUrl = "" />
<!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true 。在部署前设置为 false 以避免泄漏异常信息 -->
< serviceDebug includeExceptionDetailInFaults = " false " />
</ behavior >
</ serviceBehaviors >
</ behaviors >
c、再将a 中的 endpoint 中 添加 behaviorConfiguration="wb"属性
< endpoint address = "" binding = " webHttpBinding " contract = " WcfService2.IService1 " behaviorConfiguration = " wb " >
这样 F5以后,再在浏览器上 执行 http://localhost:4974/Service1.svc/GetData
可以看到 <string xmlns="http://schemas.microsoft.com/2003/10/Serialization/">You entered: 0</string>
执行成功了啦
注:带参数http://localhost:4974/Service1.svc/GetData?value=123