首页 > 解决方案 > 如何从外部 dll 访问基础项目会话?

问题描述

我创建了一个 Web 应用程序并向其中添加了一个 dll(XDav.Settings)。在此 dll 中,在某种情况下,触发了一个事件并调用了一个静态操作,如下所示:

using NikDMSTools.Controllers;
using XDav.Settings;

namespace NikDMSTools
{
    public class XdavConfig 
    {

        public static void Register()
        {
            XDavSettings.Events(e =>
            {
                e.OnProcessing(evt =>
                {
                    if (evt.HttpVerp == XDav.Helper.HttpVerb.PUT)
                    {
                       DocumentController.xdav();
                    }
                })
               
            });
        }
    }
}

我调用 DocumentController.xdav()。

public class DocumentController
    {
       public static void xdav()
       {     
         var userinfo = System.Web.HttpContext.Current.Session["UserInfo"] as UserInfo;       
       }
    }

但可悲的是 System.Web.HttpContext.Current.Session 在 xdav 函数中为空!!。我如何访问其中的会话?

标签: c#asp.net-mvc

解决方案


你将它传递给函数:

public class DocumentController
    {
       public static void xdav(System.Web.HttpContext context)
       {     
         var userinfo = context.Session["UserInfo"] as UserInfo;       
       }
    }

并在当前上下文存在的地方这样调用它:

DocumentController.xdav(System.Web.HttpContext.Current);

推荐阅读