弄了1天半,没弄成功。郁闷死了。asp.net客户端(称作A)就是读不到通过C# webservice (称作B)传过来登录验证 系统(称作C)的session

KAI3000 2006-04-12 01:23:09
首先用户通过登录验证系统 C产生一个Session["c"],
session不是在webservice B里面产生的,

其次B和C在一个web应用程序内,所以理论上B可以直接通过Session["c"]取到值)

我就是想通过Webservice B的GetUserInfo()将Session["c"]传给A,总是不成功。
我直接通过Post方法调用webservice可以显示登录后的xml数据,但是,
A总是取不到值。

A端代码:
-------------------------------
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
www.eChengs.com.SecurityWebService ws = new www.eChengs.com.SecurityWebService();
CookieContainer cc = new CookieContainer();
ws.CookieContainer = cc;
www.eChengs.com.UserInfo ui = ws.GetUserInfo();
if(ui!=null)
Response.Write(ui.UserName);
}
}
---------------------------
请各位大侠指点。
...全文
464 16 打赏 收藏 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsjxjb2000 2006-04-13
  • 打赏
  • 举报
回复
你可以在 WS端定义一个自己的类 然后把要得到的信息先保存在 此类中,在客户端通过引用此类,得到你所需要的登录信息。这其中要用到序列化的知识。你不防试试
charles_y 2006-04-13
  • 打赏
  • 举报
回复
『A系统』——Session["A"]---->『Webservice B』———Session["A"]———》『C系统』
-----
你理解的就不对
『A系统』——Session["A"]
这个Session不是属于整个A系统的,而是属于A系统的一个客户端的,或者说属于A系统的一个应用实例所有。

所以Wbservice怎么可能取得A系统产生的Session["A"]呢?
如果能这么乱取的话,系统还有什么安全性而言,当然除非你有办法把这个webservice的一个实例跟这个客户端连接起来,cookiecontainer是一个方法,问题是你想先从ie到这个cookiecontainer并传送给你的ws一个实例。

记住,session 应用是针对一个实例,所以你的ws必须是一个实例,这个实例必须跟你要取session值的那个应用实例(比如一个ie客户端应用)先行挂钩
KAI3000 2006-04-13
  • 打赏
  • 举报
回复
我再说一遍啦:稍后请去看我另外开的总结贴~
-------
『A系统』——Session["A"]---->『Webservice B』———Session["A"]———》『C系统』

-------
从A系统登录,产生Session["A"],Wbservice取得从A系统产生的Session["A"],传给C系统

我意思是说这样的过程似乎不可能实现。


charles_y 2006-04-13
  • 打赏
  • 举报
回复
不明白你的思路是什么。

要取到Session,必须保证客户端的实例是同一个,你怎么能保证你这个webservice的实例跟你在web上运行的客户端实例是同一个?

KAI3000 2006-04-13
  • 打赏
  • 举报
回复
问题还没解决,但我还是先揭帖了。
KAI3000 2006-04-12
  • 打赏
  • 举报
回复
看来在webservice内部产生session才能传递给其他客户端,而在webservice之外的第三方产生的session,webservice可以取到他却似乎没有办法传给其他客户端
KAI3000 2006-04-12
  • 打赏
  • 举报
回复
即便取得到(通过直接调用asmx的方法),也无法传到客户端,客户端没法接受到。代码如下。
--------------------------------
[WebMethod(EnableSession = true, Description = "获得已在大平台上登录的当前用户信息类实例")]
public string GetUserInfo()
{

UserInfo ui = new UserInfo();
ui = Session["UserInfo"] as UserInfo;
return ui.UserName;
}

------------------------------------
public partial class Test : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
www.eChengs.com.SecurityWebService ws = new www.eChengs.com.SecurityWebService();
Response.Write(ws.GetUserInfo());//会报错,说没有取到实例”)
}
}

------------------------------
KAI3000 2006-04-12
  • 打赏
  • 举报
回复
奇怪了啊。
在同一个web程序内,webserviec服务器端似乎不能取到asp.net程序产生的session喔?

难道session必须在webservice里面产生?
charles_y 2006-04-12
  • 打赏
  • 举报
回复
在同一个web程序内(这一点必须保证),应该是能取到值。


CookieContainer cc = new CookieContainer();
ws.CookieContainer = cc;

这两句不能要,不然的话你的webservice里面的session 会被置空。因为这个是可以传递webservice状态的,而你新开了一个空的CookieContainer
真相重于对错 2006-04-12
  • 打赏
  • 举报
回复
UserInfo 定义 ???
mmqingfeng 2006-04-12
  • 打赏
  • 举报
回复
其次B和C在一个web应用程序内,所以理论上B可以直接通过Session["c"]取到值

==========================
确定么?还真没这样用过,
你在 Session["IsLogined"] 这句加断点看看有没有session的值
mmqingfeng 2006-04-12
  • 打赏
  • 举报
回复
感觉webservice似乎有问题,把GetUserInfo()代码贴上来
KAI3000 2006-04-12
  • 打赏
  • 举报
回复
to all:EnableSession我已经设置过。session不是在webservice里面产生的,是在外部产生之后,用webservice来传递的。

[WebMethod(EnableSession = true, Description = "获得已在大平台上登录的当前用户信息类实例")]
public Etrip.Security.MembershipExModel.UserInfo GetUserInfo()
{
//if ((int)Session["IsLogined"] == 1)
//{
return Session["UserInfo"] as UserInfo;
//}
}
KAI3000 2006-04-12
  • 打赏
  • 举报
回复
我把那两行注释了,似乎不行。

session不是在webservice里面产生的,实在外部产生之后,用webservice来传递。

如果是在webservice里面产生的,我就会弄了。

关键是原有系统有一整套的session产生机制,无需也没必要在webservice再弄session生成
真相重于对错 2006-04-12
  • 打赏
  • 举报
回复
[ WebMethod(EnableSession=true) ]
public xxx youwebmethod()
{
}
  • 打赏
  • 举报
回复
不要用Cookie
内容概要:本文提出了一种针对电动汽车集群并网的分布式鲁棒优化调度模型,旨在应对大规模电动汽车接入电网所带来的不确定性与调度复杂性。该模型采用分布式优化框架,结合鲁棒优化理论,有效处理由用户行为、充电需求及可再生能源出力等多重不确定性因素引起的调度风险。通过构建考虑电池损耗、用户响应意愿及电网约束的多目标优化问题,实现了在保证电网运行安全与稳定的同时,最大化社会整体效益与用户参与积极性。文中详细阐述了模型的数学构建、求解算法及仿真验证过程,展示了该方法在降低峰值负荷、平抑负荷波动以及提升可再生能源消纳能力方面的显著优势。; 适合人群:具备一定电力系统、优化理论和MATLAB编程基础,从事智能电网、电动汽车调度、分布式能源管理等相关领域研究的研发人员和研究生。; 使用场景及目标:①为电力系统运营商提供高比例电动汽车接入场景下的鲁棒调度决策支持;②为学术研究人员提供分布式鲁棒优化在复杂能源系统中应用的典型案例与代码参考;③目标是提升电网韧性,优化资源配置,并促进电动汽车与电网的协同发展。; 阅读建议:此资源以MATLAB代码实现为核心,建议读者在学习时结合算法原理与代码细节,通过修改参数和场景设置进行仿真复现与结果分析,以深入理解分布式鲁棒优化的内在机制及其在解决实际工程问题中的应用价值。

12,164

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 Web Services
社区管理员
  • Web Services社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧