这种方法的问题是CreateSessionID实际上并没有创建会话.顾名思义,它只创建一个唯一的会话ID.如果你看一下MSDN文档,它说
不应从应用程序代码调用此方法.
如果您再读一遍,您将看到该方法意图被自定义会话ID管理器覆盖,然后可以通过编辑您的web.config将其集成到会话管理系统中.
换句话说,您当前使用的CreateSessionID没有按照您的意愿执行.
如果您确实想在Web服务中使用会话状态,那么您应该看一下本文.
简而言之,您需要将EnableSession=true参数添加到[WebMethod]属性中,然后您可以通过自动访问会话Context.Session.请注意,这不需要通过服务传递会话ID,因为IIS将为您处理所有事情.
您可以使用该CreateSessionID()方法(尽管您最好使用其他方法)来创建用户需要随每个请求传递的令牌,但它只会用于验证用户; 没有会话可以基于它重新生成.如果您选择此路线,请确保通过HTTPS访问您的服务.否则,任何窃听者都会以纯文本形式看到令牌(尽管如果您还检查IP地址/用户代理字符串/等,这可以减轻).
希望有所帮助.
| 归档时间: |
|
| 查看次数: |
2409 次 |
| 最近记录: |