当前位置: 首页 > 编程语言 > C#

IRequiresSessionState-如何使用它?分享

时间:2023-04-10 12:49:08 C#

IRequiresSessionState-我该如何使用它?我需要能够在查看会话状态时进行更改。我发现了IRequiresSessionState标记接口,但一直无法弄清楚如何使用它。我想我可能遗漏了一些明显的东西。你们中的一位C#专家能给我一个快速的1-2-3步骤吗(例如)?创建一个新类,将公共接口IRequiresSessionState放入其中。使用IRequiresSessionState('abra_cadabra')更改值。要标记一个类,请在现有类名中添加一个冒号并放置标记。如果我有一个类:publicclassPageToolsMarked,它看起来像publicclassPageTools:IRequiresSessionState或两个接口publicclassPageTools:IRequiresSessionState,IHttpHandler。就我而言,我的班级只需要标记第一个。我的经理两者都需要。如果右键单击刚刚输入的标记,则可以从菜单(visualstudio)中选择实现,然后将必要的方法添加到类中。或者您可以查找它们并手动添加它们。获得IRequiresSessionState标记后,您可以测试会话状态是否为只读,如果是,则设置一个新的http处理程序。如果(context.Handler是IReadOnlySessionState||context.Handler是IRequiresSessionState){context.Handler=Handler();http处理程序:MSDN会告诉您很多关于HttpHandlers和HttpModules的信息。在我的例子中,我需要一个虚拟处理程序,以便我可以在会话状态通常为只读(Page_PreInit)时访问它。所以在我的课上我添加了这个:protectedIHttpHandlerHandler(){if(resourceHttpHandler!=null)//设置原来的处理程序返回{returnresourceHttpHandler.OriginalHandler;}//此时会话状态应该可用returnHttpContext.Current.Handler;}publicclassMyHttpHandler:IHttpHandler,IRequiresSessionState{内部只读IHttpHandlerOriginalHandler;publicMyHttpHandler(IHttpHandleroriginalHandler){OriginalHandler=originalHandler;}publicvoidProcessRequest(HttpContextcontext){//别担心,ProcessRequest()不会被调用,//但为了安全起见thrownewInvalidOperationException("MyHttpHandlercannotprocessrequests.");}publicboolIsReusable{//IsReusable必须设置为false,因为类有一个成员!得到{返回假;}}}这是对非常优雅的HttpModule类的引用,我从中得到了很多或我使用了它。我希望这可以帮助别人。您只需从IRequiresSessionState派生HTTPHandler类即可获得SessionState访问权限。publicclassMyHttpHandler:IHttpHandler,IRequiresSessionState{publicvoidProcessRequest(HttpContextcontext){varMyValue=context.Session["MyKey"]asString;MyValue="你好世界";context.Session["MyKey"]=MyValue;}publicboolIsReusable{get{returntrue;}}}IRequiresSessionState接口是一个标记接口,不包含任何方法,因此您不能按照您要求的方式使用它。您只需在HTTP处理程序中实现该接口,以确定该处理程序需要对会话状态值进行读写访问。要了解如何在HTTP处理程序中实现它,请查看此链接:http://www.willasrari.com/blog/irequiressessionstate-and-dynamic-data-in-static-pages/000262.aspx以上是C#学习教程:IRequiresSessionState-我该如何使用它?如果所有分享的内容对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: