Context ctx 当前上下文 经常用于数据库查询等操作,在自定义Webapi接口中往往只能通过先调用登陆接口,再通过 this.KDContext.Session.AppContext 获取到 Context ctx,就很烦。分享一种直接调用自定义webapi接口,接口中调用客户端登陆获取Context ctx的方法,此方法将获取到的Context ctx放入缓存中,避免一直调用客户端登陆。
C#方法:
/// <summary>
/// Webapi中获取ctx方法,无需先调用登陆接口,获取到ctx后放入缓存中,使得不重复调用客户端登陆,sjzxid数据中心id,user用户,pwd密码
/// </summary>
/// <param name="sjzxid"></param>
/// <param name="user"></param>
/// <param name="pwd"></param>
/// <returns></returns>
public Context Logmsg(string sjzxid,string user,string pwd )
{
var value = HttpRuntime.Cache.Get("Context");
if (value == null)
{
var proxyz = new Kingdee.BOS.ServiceFacade.KDServiceClient.User.UserServiceProxy();
LoginInfo loginInfoz = new LoginInfo();
loginInfoz.AcctID = sjzxid;
loginInfoz.Username = user;
loginInfoz.Password = pwd;
loginInfoz.Lcid = 2052;
var ctx = proxyz.ValidateUser("", loginInfoz).Context;
try
{
object obj1 = HttpRuntime.Cache.Add(string.Format("Context{0}", sjzxid), ctx, null, DateTime.Now.AddMinutes(25), TimeSpan.Zero, CacheItemPriority.Default, null);//将上下文信息添加到缓存中并设置到期时间25分钟
var value2 = HttpRuntime.Cache.Get(string.Format("Context{0}", sjzxid));//获取缓存中的当前上下文
return (Context)value2;
}
catch (Exception)
{
return null;
}
}
else
{
return (Context)value;
}
}
推荐阅读
您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!
请选择打赏金币数 *