如何从外部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;       
       }
    }

但是遗憾的是,在xdav函数!!中System.Web.HttpContext.Current.Session为null。我如何访问其中的会话?

解决方法

您将其传递给函数:

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

并在当前上下文存在的地方这样称呼它:

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