当我能看到会话状态时,我需要能够改变.我发现了IRequiresSessionState标记界面,但一直无法弄清楚如何使用它.我想我可能会遗漏一些明显的东西.你们其中一个C#guru会给我一个快速的1-2-3步骤(例如)吗?
public interface IRequiresSessionState.IRequiresSessionState('abra_cadabra')更改数值.Pra*_*gus 12
public class PageTools
标记,它看起来像public class PageTools : IRequiresSessionState或两个接口,public class PageTools : IRequiresSessionState, IHttpHandler.在我的情况下,我的班级只需要标记第一个.我的经理需要两者.implement从菜单(visual studio)中进行选择,并将必要的方法添加到您的课程中.或者您可以查找它们并手动添加它们.获得IRequiresSessionState标记后,您可以测试会话状态是否为只读,如果是,则设置新的http处理程序.
if (context.Handler is IReadOnlySessionState
|| context.Handler is IRequiresSessionState)
{
context.Handler = Handler();
}
Run Code Online (Sandbox Code Playgroud)http处理程序:MSDN将告诉你很多关于HttpHandlers和HttpModules的信息.在我的情况下,我需要一个虚拟处理程序,以便在通常只读(Page_PreInit)时我可以访问会话状态.所以在我的班上我添加了这个:
protected IHttpHandler Handler()
{
MyHttpHandler resourceHttpHandler = HttpContext.Current.Handler
as MyHttpHandler;
if (resourceHttpHandler != null) // set the original handler back
{
return resourceHttpHandler.OriginalHandler;
}
// at this point session state should be available
return HttpContext.Current.Handler;
}
public class MyHttpHandler : IHttpHandler, IRequiresSessionState
{
internal readonly IHttpHandler OriginalHandler;
public MyHttpHandler(IHttpHandler originalHandler)
{
OriginalHandler = originalHandler;
}
public void ProcessRequest(HttpContext context)
{
// do not worry, ProcessRequest() will not be called,
// but let's be safe
throw new InvalidOperationException(
"MyHttpHandler cannot process requests.");
}
public bool IsReusable
{
// IsReusable must be set to false since class has a member!
get { return false; }
}
}
Run Code Online (Sandbox Code Playgroud)这是对非常优雅的HttpModule类的引用,我从中获得了很多或者我使用过的内容.我希望这可以帮助别人.
您只需从IRequiresSessionState派生HTTP Handler类以获取SessionState访问权限.
public class MyHttpHandler : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest(HttpContext context)
{
var MyValue = context.Session["MyKey"] as String;
MyValue = "Hello World";
context.Session["MyKey"] = MyValue;
}
public bool IsReusable
{
get { return true; }
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
20485 次 |
| 最近记录: |