相关疑难解决方法(0)

为什么WebMethod可以在没有EnableSessionState的情况下访问会话状态?

我在标记为a的页面上有一个方法,[WebMethod]它使用一些会话状态作为其操作的一部分.在我编写这段代码之后,EnableSessionState当你在a中使用会话状态时,我突然想要使用闪存[WebMethod](例如,请参阅此处:http://msdn.microsoft.com/en-us/library/byxd99hx.aspx) .但似乎工作正常.为什么?

示例代码背后:

protected void Page_Load(object sender, EventArgs args) {
    this.Session["variable"] = "hey there";
}
[System.Web.Services.WebMethod]
public static string GetSessionVariable() {
    return (string)HttpContext.Current.Session["variable"];
}
Run Code Online (Sandbox Code Playgroud)

样本体html:

<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
    function getSession() {
        $.ajax({
            type: 'POST',
            url: 'Default.aspx/GetSessionVariable',
            data: '{ }',
            contentType: 'application/json; charset=utf-8',
            dataType: 'json',
            success: function (msg) {
                document.getElementById("showSessionVariable").innerHTML = msg.d;
            }
        });
        return false;
    }
</script>
<form id="form1" runat="server">
    <div id="showSessionVariable"></div>
    <button onclick='return getSession()'>Get Session Variable</button>
</form>
Run Code Online (Sandbox Code Playgroud)

asp.net webforms session-state asmx webmethod

12
推荐指数
1
解决办法
2万
查看次数

Shared方法中的HttpContext.Current.Session不会持久更改

我在System.Web.UI.Page中使用一些WebMethod来处理一些ajax请求,我试图在会话中存储一个对象,以便在几个ajax请求之后保留信息,甚至在离开页面并返回之后.

我正在访问会话HttpContext.Current.Session("foo"),如果它没什么,我通过它设置它HttpContext.Current.Session("foo") = New Bar().

我遇到的问题是,在设置之后,下次我按下该方法时它已被重置.我尝试更改在其他地方设置的其他会话变量,它们也会被还原.这告诉我,我正在获取会话状态的副本,而不是我可以更新并导致从请求到请求持久化的引用.我仔细检查EnableSession了WebMethod 的属性是否为True,但仍未保留更改为会话状态.

方法声明:

<System.Web.Services.WebMethod(EnableSession:=True)>
Public Shared Function foo(ByVal woNum As String, ByVal workCenter as String) As ToolingModel
    Return ToolingModel.getSessionTooling(woNum, workCenter)
End Function
Run Code Online (Sandbox Code Playgroud)

getSessionTooling:

Public Shared Function getSessionTooling(woNum As String, workCenter As String) As ToolingModel
    Dim tooling As ToolingModel = HttpContext.Current.Session(TOOLING_MODEL_SESSION_KEY)

    If tooling Is Nothing Then
        tooling = New ToolingModel(woNum, workCenter)
        HttpContext.Current.Session(TOOLING_MODEL_SESSION_KEY) = tooling
    ElseIf tooling.woNum <> woNum OrElse tooling.workCenter <> workCenter Then
        tooling.woNum = woNum
        tooling.workCenter = workCenter
        tooling.assets.Clear() …
Run Code Online (Sandbox Code Playgroud)

vb.net session-state webmethod

6
推荐指数
1
解决办法
721
查看次数

将asmx中的对象存储到会话中并在母版页中获取此值 - 获取null

我尝试将我的对象存储在asmx Web服务中的会话中

 user = new MyUser(UserName);
 Session["user"] = user;
Run Code Online (Sandbox Code Playgroud)

并从页面加载部分的主页读取,但我得到null

user = (MyUser)Session["user"];
Run Code Online (Sandbox Code Playgroud)

当我尝试使用简单的字符串而不是MyUser对象时它可以工作

任何的想法?

谢谢.

.net c# asp.net session web-services

2
推荐指数
1
解决办法
3402
查看次数

标签 统计

asp.net ×2

session-state ×2

webmethod ×2

.net ×1

asmx ×1

c# ×1

session ×1

vb.net ×1

web-services ×1

webforms ×1