gpt4 book ai didi

c# - IRequiresSessionState - 我该如何使用它?

转载 作者:可可西里 更新时间:2023-11-01 07:44:27 26 4
gpt4 key购买 nike

我需要能够在看到 session 状态时进行更改。我发现了 IRequiresSessionState 标记接口(interface),但一直无法弄清楚如何使用它。我想我可能遗漏了一些明显的东西。你们中的一位 C# 大师可以给我快速的 1-2-3 步骤吗(例如)?

  1. 创建一个新类(class),
  2. public interface IRequiresSessionState 放入其中。
  3. 使用 IRequiresSessionState('abra_cadabra') 更改值。

最佳答案

  1. 要标记一个类,请在现有类名中添加一个冒号并放置标记。如果我有一个类:public class PageTools已标记,它看起来像 public class PageTools : IRequiresSessionState 或具有两个接口(interface),public class PageTools : IRequiresSessionState, IHttpHandler。就我而言,我的类(class)只需要标记为第一个。我的处理程序需要两者。
  2. 如果右键单击刚刚输入的标记,您可以从菜单 (visual studio) 中选择 implement,必要的方法将添加到您的类中。或者您可以查找并手动添加它们。
  3. 获得 IRequiresSessionState 标记后,您可以测试 session 状态是否为只读,如果是,则设置新的 http 处理程序。

    if (context.Handler is IReadOnlySessionState
    || context.Handler is IRequiresSessionState)
    {
    context.Handler = Handler();
    }
  4. http 处理程序: MSDN 会告诉您很多关于 HttpHandlers 和 HttpModules 的信息。在我的例子中,我需要一个虚拟处理程序,这样我就可以访问通常只读的 session 状态 (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; }
    }
    }

Here 是对一个非常优雅的 HttpModule 类的引用,我从中获得了很多或使用过的东西。我希望这可以帮助别人。

关于c# - IRequiresSessionState - 我该如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1375627/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com