Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/33.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用Activator.CreateInstance执行类方法时访问ASP.NET会话_C#_Asp.net_Reflection_Session State_Activator - Fatal编程技术网

C# 使用Activator.CreateInstance执行类方法时访问ASP.NET会话

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

我有一个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,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。我需要用这个来检查会话是否超时。