WCF的RSET Service
发布与一般的“WCF应用程序”发布到IIS,没有什么区别!
[WebGet(UriTemplate = "")]
4. IIS测试成功,如要查看各服务帮助,使用类似URI:
http://localhost:8322/WcfRest/Service2/help
VS.NET自带的Development Server与真实的IIS区别还是比较大的,以后尽量用IIS测试!下一步研究将实现它的HTTPS发布,并实现自定义用户名和密码验证
5. jQuery调用WCF REST Service示例(测试时,发现Call基地址时,最好加上"/")
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)]
基本思想就是通过了验证,则手工作一个Cookie返回去(加密了的),以后要请求网站资源,必须把Cookie带回来作验证,REST是以标准的HTTP协议实现,所以这点很容易。
Forms身份验证很容易配置,除了LoginService可以匿名访问,其它的一概不允许,当访问受限时,自动以GET方式访问LoginService,得到的提示是:非法用户。
后面我们用控制台以标准的HTTP方式访问,得到了正常的数据。
8.发布在IIS上,并以SSL加以保护,这是折腾我最久的:
要想SSL正常,有几个要点特别注意:
(1)Web.Config的配置
<bindings>
<standardEndpoint name="" helpEnabled="true" automaticFormatSelectionEnabled="true" maxReceivedMessageSize="3000000">
(2)服务器配置,防火墙高级设置,入站规则要加上433端口(可以在80后加,80,433)
测试正常,很完美,以下是测试代码: REST服务及调用
下一步的计划:实现WCF双向认证,角色权限研究,WCF RSET用上MSMQ