分享一个自定义Webapi接口不调用登陆接口中获取当前上下文的方法原创
金蝶云社区-老杂鱼
老杂鱼
21人赞赏了该文章 2,617次浏览 未经作者许可,禁止转载编辑于2021年08月03日 09:20:54

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;

            }

        }




图标赞 21
21人点赞
还没有人点赞,快来当第一个点赞的人吧!
图标打赏
0人打赏
还没有人打赏,快来当第一个打赏的人吧!

您的鼓励与嘉奖将成为创作者们前进的动力,如果觉得本文还不错,可以给予作者创作打赏哦!

请选择打赏金币数 *

10金币20金币30金币40金币50金币60金币
可用金币: 0