Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.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# 为了绕过回发而访问会话,是否有WebMethod的替代方案_C#_Asp.net_Ajax_Webforms_Webmethod - Fatal编程技术网

C# 为了绕过回发而访问会话,是否有WebMethod的替代方案

C# 为了绕过回发而访问会话,是否有WebMethod的替代方案,c#,asp.net,ajax,webforms,webmethod,C#,Asp.net,Ajax,Webforms,Webmethod,因此,我正在努力提高ASP.NETWebForms应用程序的性能 像往常一样,回发会尽最大努力降低性能。我是来学习WebMethod调用的,我也成功地实现了这些调用。然而,对于我的特定场景,我需要访问会话,这在静态方法中显然是不可能的 所以现在我的想法是编写一个HttpModule来解决这个问题。然而,这似乎是一个相当大的努力,所以我想知道你们中是否有人知道这个任务的现成解决方案 请注意,这只是一个关于是否已经存在某些东西的问题。编写模块将非常简单。我只是想避免重新发明轮子。如果您的问题是从静态

因此,我正在努力提高ASP.NETWebForms应用程序的性能

像往常一样,回发会尽最大努力降低性能。我是来学习WebMethod调用的,我也成功地实现了这些调用。然而,对于我的特定场景,我需要访问会话,这在静态方法中显然是不可能的

所以现在我的想法是编写一个HttpModule来解决这个问题。然而,这似乎是一个相当大的努力,所以我想知道你们中是否有人知道这个任务的现成解决方案


请注意,这只是一个关于是否已经存在某些东西的问题。编写模块将非常简单。我只是想避免重新发明轮子。

如果您的问题是从静态成员访问会话对象,那么您可以使用
HttpContext.Current.Session[“…”]

请参阅有关HttpContext.Current属性的文档; 在该属性中还有
请求
响应
等等

正如@Martin所建议的那样

无论在何处设置会话,都需要
EnableSessionState=“ReadOnly”
以及页面声明中的
Async=“true”


在方法上使用WebMethod属性时,可以指定“EnableSession”属性:我一直都这样做,例如,显示文件上载的进度。文件上载在iframe中进行,并在进程中更新会话变量。PageMethods用于从包含iframe的页面查询会话变量,因此可以显示进度条。对会话的访问是您的问题吗?如果是,为什么不使用
HttpContext.Current.Session[“…”]
它在静态模式下可用methods@fabyHttpContext.Current.Session[“a”]=“b”和Session[“a”]=“b”之间是否没有区别在页面上?否@AndreasMüller我发布了一个答案我会尝试并标记为答案,然后删除问题,因为出于某种原因,出于兴趣,我被否决了,你能告诉我谁被否决了吗?我不明白为什么有些人“比你圣洁”。对我来说,这似乎是一个完全合理的问题。无论在何处设置会话,都需要在页面声明中启用sessionstate=“ReadOnly”和Async=“true”。@谢谢您提供的其他信息。是的。。。我也不明白。这并不是说已经有几十个问题了,更糟糕的是,你是对的!谢谢你的建议。我会把它放在我的回答里很高兴你能用上。我第一次这么做的时候,我浪费了大约两天的时间试图让它工作!
[WebMethod(EnableSession = true)]
public static string Test()
{
    string s = HttpContext.Current.Session["Test"].ToString();
    return s;
}