设为首页 收藏本站
查看: 1137|回复: 0

[经验分享] WCF小试

[复制链接]

尚未签到

发表于 2017-12-29 12:00:25 | 显示全部楼层 |阅读模式
  1、创建WCF
  右键解决方案-新建项目-WCF服务应用程序。
  创建后会生成一些文件,其中IService.cs是服务的接口,只有在接口中定义的方法才能被外部调用,Service.svc是我们的服务名称,Service.svc.cs是服务代码所在文件,继承自IService.cs。
  2、写服务代码
  由于Service.svc.cs继承自IService.cs接口,所以在写方法之前需要先在IService.cs接口中添加方法。
  比如这里添加一个DataSet GetData(int value);方法。方法前面要加OperationContract标签。
  

[OperationContract]  
DataSet GetData(
int>  

  然后在Service.svc.cs文件中实现这个方法。
  

public DataSet GetData(int>
{try  {
  SqlParameter[] pms
= { new SqlParameter("@UserId",id)};  Entities db
= new Entities();  List
<User> user = db.User.SqlQuery("exec sp_GetUser @UserId",pms).ToList();//string sql = "exec sp_GetUser @UserId";//DataSet ds = SqlHelper.ExecuteDataSet(sql, pms);  return SqlHelper.ToDataSet(user);
  }
  catch (Exception ex)
  {
  SqlHelper.WriteErrorLog("Log", ex.Message);
  return null;
  }
  
}
  

  这里我写了两种连接数据库的方式,ADO.NET和EF,用来执行一个存储过程sp_GetUser,该过程搜索出userid等于传入参数的记录。
  除了这些还要在web.config中的system.serviceModel标签中配置WCF的内容(也可以右键web.config文件选择编辑WCF配置,具体可自行百度),如下:
  

<system.serviceModel>  <services>
  <service name="WcfServiceTest.Service1">
  <host>
  <baseAddresses>
  <!-- 部署的地址 -->
  <add baseAddress="http://192.168.113.34:801/" />
  </baseAddresses>
  </host>
  <endpoint address="WCFTest" binding="basicHttpBinding" bindingConfiguration="" contract="WcfServiceTest.IService1" />
  </service>
  </services>
  <behaviors>
  <serviceBehaviors>
  <behavior>
  <!-- 为避免泄漏元数据信息,请在部署前将以下值设置为 false -->
  <serviceMetadata httpGetEnabled="true" />
  <!-- 要接收故障异常详细信息以进行调试,请将以下值设置为 true。在部署前设置为 false 以避免泄漏异常信息 -->
  <serviceDebug includeExceptionDetailInFaults="false" />
  </behavior>
  </serviceBehaviors>
  </behaviors>
  <serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
  </system.serviceModel>
  

  写到这,我们的WCF服务端代码就完成了,直接F5运行项目,即可在本地调试WCF,调试完成后右键Service.svc,选择在浏览器中查看,就可以看到我们的服务了,地址栏中的地址就是我们的服务地址了。

  3、部署
  我们的WCF服务是要部署在IIS服务器上的,这一步也是最容易出错的地方。
  右键添加网站,指向我们发布好的文件夹,右侧菜单选择浏览。
  这里要注意几点:
  1、要保证IIS应用程序池的Framework版本和发布的代码版本一致,否则会出错。
  2、IIS中该项目的标识默认是ApplicationPoolIdentity,要设置为NetworkService,否则会出错。
  3、SqlServer中的NetworkService用户要启用,如果没有的话就要自己添加,添加步骤为:
  数据库-安全性-登录名-右键新建登录名-搜索-高级-立即查找-选中NetworkService-确定。然后配置该用户的权限。
  注意这里的NetworkService用户不是我们数据库的登录用户。不影响连接字符串中的uid。
  4、调用
  我们使用WebForm页面来调用部署好的WCF服务。
  创建完项目后,右键添加服务引用,输入我们部署好的服务地址(如http://192.168.113.34:801/Service1.svc),点击转到,即可看到我们的服务名称,点击该服务还能看到可以调用的方法,确定。
  引用完后会多出一个Service References文件夹,里边是我们引用的服务。如图:

  然后在cs文件里使用该服务:
  

ServiceReference1.Service1Client sc = new ServiceReference1.Service1Client();  

  其中的sc即是我们的服务对象,就可以点出我们想要调用的方法了:
  

DataSet ds = sc.GetData(1);  

  OK,搞定!

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429312-1-1.html 上篇帖子: http 报错码对应的错误原因 下篇帖子: delphi2010 开发及调试WebService 实例
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表