ashx和session解决未将对象引用设置到对象的实例问题

在asp.net中,如果使用asp.net webform获得用户名和密码,再用ajax传到一个ashx页面中,源码这样:

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title></title>
    <script src="js/jquery-1.4.2.js"></script>
    <script src="js/jquery-ui-1.8.2.custom.js"></script>
    <script type="text/javascript">
        $(function () {
            $("#btnConfirm").click(function () {
                var userName = $("#txtUser").val();
                var Pwd = $("#txtPwd").val();
                alert(userName+","+Pwd);
                $.post("/ajax/LoginAshx.ashx", { "userName": userName, "Pwd": Pwd }, postFinsh);
            });
        });
        var postFinsh = function (data) {
            if (data == "ok") {
                alert("登录成功!");
                window.location = "example3-4.aspx";
            } else {
                alert("登录失败!");
                window.location = "Login.aspx";
            }
        }
    </script>
</head>
<body>
    <center>
    <form id="form1" runat="server">
        <p align="center">用户登录</p>
        <table border="1" width="30%">
            <tr>
                <td>用户名:</td>
                <td><input type="text" id="txtUser" /></td>
            </tr>
            <tr>
                <td>密码</td>
                <td><input type="password" id="txtPwd" /></td>
            </tr>
            <tr>
                <td></td>
                <td><input type="button" value="确定" id="btnConfirm" />
                <input type="button" value="取消" id="btnCancel"/></td>
            </tr>
        </table>
    </form>
        </center>
</body>
</html>

然后转到ashx页面,源码为:

if (context.Request["userName"].ToString() != "" && context.Request["Pwd"].ToString() != "")
            {
                string userName = context.Request["userName"];
                string pwd = context.Request["Pwd"];
                context.Session["UName"] = userName;
                context.Session["Pwd"] = pwd;
                context.Response.Write("ok");

但是当在浏览器中显示时会报错:

ashx和session解决未将对象引用设置到对象的实例问题_第1张图片

解决的方法为实现IRequiresSessionState 接口,其他源码不变,

然后就可以解决这个问题。

你可能感兴趣的:(ashx和session解决未将对象引用设置到对象的实例问题)