首页蓝耳朵|小小蓝耳朵广州图书馆外文室英语儿童读物资源介绍网佛教青年之友旧版收集永硕E盘Phonics Short Vowels Game 
记录学习WCF时用到的地址
所属栏目:WCF  时间:2011-07-13 17:58  作者:狼子
Windows Communication Foundation

Implementing a Basic Hello World WCF Service By Mike X Liu

使用配置文件配置服务

配置编辑器工具 (SvcConfigEditor.exe)
 
 
在MSDN的提问:请问WCF的服务里怎么做像登录那样的状态值记录?
 
狼子 2011年7月14日 8:40
Host、Service、Client三部分都搞出来了,Service是类库,Host我放在网上了,Client做了一个winform的程序测试
 
Host的web.config里,我现在设置的是不验证客户端:
<bindings>
  <wsHttpBinding>
  <binding name="NoneSecurity"
  maxBufferPoolSize="12000000" maxReceivedMessageSize="12000000" useDefaultWebProxy="false">
  <readerQuotas maxStringContentLength="12000000" maxArrayLength="12000000"/>
  <security mode="None"/>
  </binding>
  </wsHttpBinding>
  </bindings>
<endpoint address="http://test......cn/HelloWorldService.svc"
  binding="wsHttpBinding"
  contract="MyWCFServices.IHelloWorldService"
  bindingConfiguration="NoneSecurity" />
 
Client部分的app.config和HelloWorldServiceRef.cs两个文件是用SvcUtil.exe生成的
 
像Hello World, Peter这样子的传一个参数接收后显示出来的简单东西可以实现
 
我现在想要在数据库里建一个用户表:用户名、密码、生日
然后呢,我想从Client里传递用户从TextBox录入的用户名和密码到Service部分,从数据库里查询出是正确后返回值,就是,允许登录,返回Hello World, Peter。
 
然后呢,我想在Client里再做一个按钮,比如“查找和我同一天生日的人”,点这个按钮的时候,可以从数据库里查询和当前登录的用户,比如Peter,相同生日的人,把得到的数据用DataTable返回。
 
程序的每一部分代码单独我都知道怎么写,就是不知道这个登录里怎么记录值。这里没有Session,没有Cookie,如果在做第2步的时候,我不想重复传递用户名和密码到Service,不想在Service每做一步操作,都先从用户表里查询有没有这样子的用户,我要怎么做呢?
 
怎样子做才可以像在asp.net里一样子,在登录完,记录一个Session["UserID"]?怎样子在Service部分和Client连在一起记录这个登录后的状态?

狼子 2011年7月15日 7:47
我现在启用了和asp.net兼容的模式,直接用Session了
 
在类库项目里,我加了System.Web的引用,类文件里加了这句:
[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Allowed)]
然后呢,我就直接在类文件的方法使用HttpContext.Current.Session设置和调用值了
 
在寄宿服务的网站,web.config的system.serviceModel节点里,我加了这个节点:
<serviceHostingEnvironment aspNetCompatibilityEnabled="true"/>
 
在调用服务的客户端程序里,我重新用SvcUtil.exe生成了HelloWorldServiceRef.cs、app.config两个文件,修改了app.config文件的allowCookies的属性值是true
 
我现在可以像写asp.net一样子写服务了,登录、记录登录后的状态和值、检测登录,全部都一样子
 
就是,这个和我这两天看的一堆安全认证、授权、证书,全部,一堆,好像什么关系都没有,请问我这样子的做法是正确的吗?开启asp.net兼容模式,对WCF服务会有什么不好的地方吗?
 
 
Frank Xu Lei 2011年7月18日 2:53
解决方案就是针对特定问题的。
 
你这个解决办法满足了上面问题 的需求。
 
可行。
 
属于自己实现的验证机制。
 
至于使用不使用Asp.net Session机制,这属于解决办法中的一个步骤。
 
如果你要使用Https传递用户名密码,这里就会有加密 以及证书的问题。
 
这个做法可以
小楼宝宝的涂鸦花花(Imitater)的博客起名称骨测字皖ICP备06000023号-17