2 scwysy scwysy 于 2014.11.24 18:37 提问

ashx中IRequiresSessionState接口导致Request.InputStream空

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

3个回答

scwysy
scwysy   2015.01.14 18:15
已采纳

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

scwysy
scwysy   2014.11.24 18:39

前台:
$.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;
}

showbo
showbo   Ds   Rxr 2014.11.25 09:11

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

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

Csdn user default icon
上传中...
上传图片
插入图片