惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
G
Google Developers Blog
Hugging Face - Blog
Hugging Face - Blog
博客园 - 【当耐特】
S
SegmentFault 最新的问题
宝玉的分享
宝玉的分享
博客园 - Franky
博客园_首页
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
有赞技术团队
有赞技术团队
月光博客
月光博客
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
小众软件
小众软件
Microsoft Security Blog
Microsoft Security Blog
Last Week in AI
Last Week in AI
Vercel News
Vercel News
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
爱范儿
爱范儿
J
Java Code Geeks
博客园 - 叶小钗
Engineering at Meta
Engineering at Meta
阮一峰的网络日志
阮一峰的网络日志

博客园 - Blaze

eVC++就是eVC++啊 - Blaze - 博客园 VC++常用数据类型及其操作详解[徐兆元] From VB.NET to C# and Back Again [By Darren Neimke and Scott Mitchell ] 请不要做浮躁的人(老文了,还是转一下,共勉) 地球上最慢的网路不在巴布里亚新几内亚和尼泊尔之间,而在中国网通和电信之间! [翻译]用TcpClient建立GPRS连接 1年零2个月零25天 我回来了 .NET的Pascal--Chrome来了! Gmail疯了?50个邀请! 检举个博客园的Bug! INI配置文件的替代品-XML配置文件的操作 INI的替代品--XML配置文件读取与保存 Wallop下蛋送邀请。 Gmail下蛋了 udp的奇怪问题 webservice对"小"规模数据传输的效率问题 运动会痛苦经历 n个VB.Net C#代码转换工具 关于时间的加减计算
从WebService的SessionID说起
Blaze · 2005-01-08 · via 博客园 - Blaze

ChatingBlog中有个公司的面试题,是如何在WebService中使用Session。到CSDN的原贴看了看,翻到了后面第3页,发现了回答。将EnableSession设为True是可以的。

    <System.Web.Services.WebMethod(EnableSession:=True)> _
    
Public Function ConvertTemperature() As String
        
Return Session.SessionID
    
End Function

但是问题远比想的复杂,在本机调试的时候得到的SessionID是固定的,换了一下机器请求一次得到一个不同的SessionID。
尝试着把Web.Config的配置改了一下(将cookieless设置为true)。

  <!--  会话状态设置
          默认情况下,ASP.NET 使用 Cookie 来标识哪些请求属于特定的会话。
          如果 Cookie 不可用,则可以通过将会话标识符添加到 URL 来跟踪会话。
         若要禁用 Cookie,请设置 sessionState cookieless="true"。
    
-->
    
<sessionState 
            
mode="InProc"
            stateConnectionString
="tcpip=127.0.0.1:42424"
        sqlConnectionString
="data source=127.0.0.1;Trusted_Connection=yes"
            cookieless
="false" 
            timeout
="20" 
    
/>

问题同样没有解决。
最后我曲线救国完成了功能,但也已经不是Session了。
在数据库里新建一个表,保存Session信息。用户登陆的时候分配一个会话ID,放在表里。在每个WebMethod中都加一个参数,用来传递这个ID,然后再数据库里查找需要的东西。最后在用户注销的时候再把数据库里相应行删除。 
enjoyit-zwg的解决方案:
每次请求的SessionId都是不同的,但是可以通过设置Web服务代理的CookieContainer属性来使多次调用在同一个SessionlD。