zoukankan      html  css  js  c++  java
  • WCF的RSET Service

    最近想研究将WCF作为移动应用的服务端,刚好看到实现REST Serivce
    1.WCF REST服务项目的创建:
         http://www.cnblogs.com/lanvige/archive/2011/05/19/1895654.html
    2.WCF REST服务项目发布到IIS上,网上资料基本没提到这个问题(都认为IIS没安装ASP.NET 4.0,应用程序池没设ASP.NET 4.0),我试了全都不行
         最后发现项目模板有点问题,打开web.config,加个设置
         <serviceHostingEnvironment aspNetCompatibilityEnabled="true" multipleSiteBindingsEnabled="true"/>

        发布与一般的“WCF应用程序”发布到IIS,没有什么区别! 

    3.服务扩展,如果有多个Service,增加类,例如Service2
          并在Global.asax中作如下改动:
          RouteTable.Routes.Add(new ServiceRoute("Service2", new WebServiceHostFactory(), typeof(Service2)));}
          这里的路由原则类似于ASP.NET MVC原则(很明显,使用了相同的UrlRoute组件)
          表示http://localhost:8322/WcfRest/Service2,则调用Serive2类中有如下定义的方法:

           [WebGet(UriTemplate = "")] 

    4. IIS测试成功,如要查看各服务帮助,使用类似URI:

          http://localhost:8322/WcfRest/Service2/help

        VS.NET自带的Development Server与真实的IIS区别还是比较大的,以后尽量用IIS测试!下一步研究将实现它的HTTPS发布,并实现自定义用户名和密码验证

    5. jQuery调用WCF REST Service示例(测试时,发现Call基地址时,最好加上"/")

    jQuery调用WCF REST示例(本域内)

    6.发布在IIS上,意外发现PUT和DELETE操作受限,返回405操作,最后找到的解决方案,在网站web.config中,

    <system.webServer>
        <modules runAllManagedModulesForAllRequests="true">
        <add name="UrlRoutingModule" type="System.Web.Routing.UrlRoutingModule, System.Web, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
          <remove name="WebDAVModule" />
        </modules>

    7.WCF的身份验证

       采用了ASP.NET 原有的Forms身份验证,对

       基本思路,在WCF REST Service中实现一个LoginService,以Post方式提交用户名和密码, 这里遇到第1个问题,如何传递多个参数,当然可以用URL传,但没人想看到用户名和密码暴露,查资料,发现了窍门:

       [WebInvoke(UriTemplate = "", Method = "POST",BodyStyle=WebMessageBodyStyle.WrappedRequest)]

            public bool Login(string userName, string userPassword)

       基本思想就是通过了验证,则手工作一个Cookie返回去(加密了的),以后要请求网站资源,必须把Cookie带回来作验证,REST是以标准的HTTP协议实现,所以这点很容易。

        Forms身份验证很容易配置,除了LoginService可以匿名访问,其它的一概不允许,当访问受限时,自动以GET方式访问LoginService,得到的提示是:非法用户。

        后面我们用控制台以标准的HTTP方式访问,得到了正常的数据。 

    8.发布在IIS上,并以SSL加以保护,这是折腾我最久的:

       要想SSL正常,有几个要点特别注意:

      (1)Web.Config的配置

           <bindings>

          <webHttpBinding>
            <binding name="">
              <security mode="Transport" />
            </binding>
          </webHttpBinding>
        </bindings> 

       <standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="3000000">

            <readerQuotas maxArrayLength="300000"/>
             <security mode="Transport"/>
       </standardEndpoint> 

    (2)服务器配置,防火墙高级设置,入站规则要加上433端口(可以在80后加,80,433)

    测试正常,很完美,以下是测试代码: REST服务及调用

       下一步的计划:实现WCF双向认证,角色权限研究,WCF RSET用上MSMQ 

  • 相关阅读:
    重新学习Mysql数据库8:MySQL的事务隔离级别实战
    重新学习Mysql数据库7:详解MyIsam与InnoDB引擎的锁实现
    重新学习MySQL数据库6:浅谈MySQL的中事务与锁
    重新学习Mysql数据库5:根据MySQL索引原理进行分析与优化
    重新学习Mysql数据库4:Mysql索引实现原理
    robot_framewok自动化测试
    资源网
    现在都是python 单独开发框架 执行脚本,处理结果,发报告之类的
    事务处理
    研读 ----全栈工程师
  • 原文地址:https://www.cnblogs.com/bearhb/p/2586412.html
Copyright © 2011-2022 走看看