C# 使用Activator.CreateInstance执行类方法时访问ASP.NET会话
我有一个ASP.NET站点,用于检查特定请求(在global.asax中启动请求)。如果传入某个请求(在本例中是通过javascript执行的),则使用反射在类中运行方法C# 使用Activator.CreateInstance执行类方法时访问ASP.NET会话,c#,asp.net,reflection,session-state,activator,C#,Asp.net,Reflection,Session State,Activator,我有一个ASP.NET站点,用于检查特定请求(在global.asax中启动请求)。如果传入某个请求(在本例中是通过javascript执行的),则使用反射在类中运行方法 string[] parts = HttpContext.Current.Request.Path.Replace(".aspx", "").Split('/'); string cls = "" + parts[2]; string func = parts[3]; Type type = Type.GetType(cls
string[] parts = HttpContext.Current.Request.Path.Replace(".aspx", "").Split('/');
string cls = "" + parts[2];
string func = parts[3];
Type type = Type.GetType(cls,true);
object instance = Activator.CreateInstance(type);
type.InvokeMember(func, BindingFlags.Default | BindingFlags.InvokeMethod, null, instance, null );
我的问题是当执行方法时
HttpContext.Current.Session
和HttpContext.Current.User
都为空。我怀疑这与该方法是通过反射执行的这一事实有关。您可以将HttpContext传递给您的方法,或者,您也可以更改执行方法-为什么不在调用某个Url时调用HttpHandler或模块?这样你就可以更自然地处理请求。同意dash。HttpHandler似乎最适合您的需要。但是,您是否尝试发送SessionID并用此恢复会话?检查了应用程序_BeginRequest的状态后,在通过反射执行方法之前,HttpContext.Current.Session和HttpContext.Current.User在此时均为null。考虑到您需要会话状态,也许您应该查看,使用应用程序状态似乎是个好主意。@jbl-这对我的情况没有帮助。HttpHandler(如dash所建议的)也没有帮助。我应该在一开始就告诉你更多的信息。我有一个带有jqgrid的页面,它通过ajax调用获取数据。无论我使用上述HttpContext.Current.Session所述的不同方法调用什么来获取数据,都始终为null。我需要用这个来检查会话是否超时。