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

[经验分享] WCF入门教程(VS2008 + IIS)

[复制链接]

尚未签到

发表于 2015-8-13 09:11:51 | 显示全部楼层 |阅读模式
  最近一个项目需要使用WCF,参考了很多网上资料和MSDN,总结如下:
  1:建立一个IIS作为HOST的WCF工程
  选择NEW Project,然后选择C#,然后选择WEB,然后选择WCF Service Application
  VS2008将自动帮你生成一个示例项目,只需要在它基础上修改就可以。
  2:修改WEB.CONFIG文件
  如果你想在不同的机器访问WCF服务,需要设置身份验证,最简单是设置为None。如下:
  <system.serviceModel>
   
  <services>
   <service behaviorConfiguration="WCFService.WCFServiceBehavior" name="WCFService.WCFService">
    <endpoint address="http://localhost:9000/wcfservice" binding="wsHttpBinding" bindingConfiguration="WCFBindConfig"  contract="WCFService.IWCFService">
     <identity>
      <dns value="localhost"/>
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
   </service>
  </services>
   
  <behaviors>
   <serviceBehaviors>
    <behavior name="WCFService.WCFServiceBehavior">
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
     <serviceMetadata httpGetEnabled="true"/>
     <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
     <serviceDebug includeExceptionDetailInFaults="false"/>
    </behavior>
   </serviceBehaviors>
  </behaviors>
    <!--
    using System.IdentityModel
    -->
    <bindings>
      <wsHttpBinding>
        <binding name ="WCFBindConfig">
          <security mode ="None">
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
   
</system.serviceModel>
  3:然后客户端也相应的设置为None就可以访问,这里需要特别注意的就是:
  <bindings>
      <wsHttpBinding>
        <binding name ="WCFBindConfig">
          <security mode ="None">
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>

  和上面的一行
  <endpoint address="http://localhost:9000/wcfservice" binding="wsHttpBinding" bindingConfiguration="WCFBindConfig"  contract="WCFService.IWCFService">

  4:如果想使用用户名密码验证,WEB.CONFIG配置如下:
  
  <system.serviceModel>
   
  <services>
   <service behaviorConfiguration="WCFService.WCFServiceBehavior" name="WCFService.WCFService">
    <endpoint address="http://localhost:9000/wcfservice" binding="wsHttpBinding" bindingConfiguration="WCFBindConfig"  contract="WCFService.IWCFService">
     <identity>
      <dns value="localhost"/>
     </identity>
    </endpoint>
    <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/>
   </service>
  </services>
   
  <behaviors>
   <serviceBehaviors>
    <behavior name="WCFService.WCFServiceBehavior">
     <!-- To avoid disclosing metadata information, set the value below to false and remove the metadata endpoint above before deployment -->
     <serviceMetadata httpGetEnabled="true"/>
     <!-- To receive exception details in faults for debugging purposes, set the value below to true.  Set to false before deployment to avoid disclosing exception information -->
     <serviceDebug includeExceptionDetailInFaults="false"/>
          <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode ="Custom"  customUserNamePasswordValidatorType="WCFService.WCFService+MyUserNamePasswordValidator,WCFService"/>
          </serviceCredentials>
    </behavior>
   </serviceBehaviors>
  </behaviors>
    <!--
    using System.IdentityModel
    -->
    <bindings>
      <wsHttpBinding>
        <binding name ="WCFBindConfig">
          <security mode ="Message">
            <message clientCredentialType ="Windows" establishSecurityContext ="false"/>
          </security>
        </binding>
      </wsHttpBinding>
    </bindings>
   
</system.serviceModel>

  需要注意的如下:
  <serviceCredentials>
            <userNameAuthentication userNamePasswordValidationMode ="Custom"  customUserNamePasswordValidatorType="WCFService.WCFService+MyUserNamePasswordValidator,WCFService"/>
          </serviceCredentials>

  MyUserNamePasswordValidator是自己定义的一个验证类,必须从UserNamePasswordValidator继承。
  WCFService是你的程序集名称,也就是工程名。
  WCFService.WCFService是你的namespace.
  
  
  

运维网声明 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-98221-1-1.html 上篇帖子: [转]IIS被挂马,解决一法 下篇帖子: 用户 'IIS APPPOOL\***' 登录失败
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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