2048
登录
没  有  难  学  的  前  端
登 录
×
<返回上一级

ashx中IRequiresSessionState接口导致Request.InputStream空

jsonvs2010c#作者:猿2048志愿者

我用context.Request.InputStream 获得json数据 但是加IRequiresSessionState接口就失效了,请问大神这是为啥啊,我用的是vs2010.

评论
点击刷新
评论
被采纳
猿2048志愿者
猿2048志愿者 :

原因是启用了Url加载session ID 所以第一次访问session 链接会被重置

2018-09-20 21:52:08
猿2048志愿者
猿2048志愿者 :

前台:
$.ajax({
type: "POST",
dataType: "json",
data: JSON2.stringify({ UserName: $("#UserName").val(), Password: $("#Password").val(), ValidateCode: $("#ValidateCode").val() }),
url: '../../service/Login.ashx?Type=01',
success: function (result)
{
if (result.Flag)
{
location.href = "../System/Manage.htm";
}
else
{
$.messager.alert('错误提示', result.Message, 'warning');
$("input[name='ValidateCode']").val('');
$('#yzm').attr('src', $('#yzm').attr('src') + "?");
}
}
});
后台:
///
/// 根据一个字符串,进行JSON的反序列化,转换为一个特定类型
///
///
///
///
public static T ToJsonObject(HttpContext context)
{
var ser = new DataContractJsonSerializer(typeof(T));
StreamReader reader = new StreamReader(context.Request.InputStream);
var data = HttpUtility.UrlDecode(reader.ReadToEnd());
var ms = new MemoryStream(System.Text.Encoding.UTF8.GetBytes(data));
T result = (T)ser.ReadObject(ms);
ms.Close();
return result;
}

2018-09-20 21:52:08
猿2048志愿者
猿2048志愿者 :

发布网站到iis没有,测试你的代码可以正常从InputStream 中获取到传递的值

var data = HttpUtility.UrlDecode(reader.ReadToEnd());
context.Response.Write(data);//输出你的data看看是否有值,是不是你的反序列化有问题导致result为空

2018-09-20 21:52:09
×添加代码片段