今天想对前几天学习Ajax做一下检验,在刚完成的一个项目了加入Ajax.NET Professional 的引用,
[环境]
Ajax.NET Professional for .NET 1.1,版本5.11.4.2
Visual Studio 2003
[问题]
参照着例子完成了代码部分的工作。运行,不成功,调试发现总是报“对象引用设置到对象的实例”的错误。上网找了些资料说和调用Session有关,查看的确有调用Session的代码,代码如下:
BLL.Apply appBll = new Apply();
EmployRelationInfo info = new EmployRelationInfo();
info.SenderMemID = Session["MemberID"].ToString();
info.SenderMemName = Session["MemberName"].ToString();
info.CropInfoID = corpid;
info.MemID = memid;
[解决]
将
[AjaxPro.AjaxMethod]
public string SendApply()
{
......
info.SenderMemName = Session["MemberName"].ToString();
......
}
改为
[AjaxPro.AjaxMethod(AjaxPro.HttpSessionStateRequirement.ReadWrite)]
public string SendApply()
{
......
info.SenderMemName = HttpContext.Current.Session["MemberName"].ToString();
......
}
另外,当Ajax.net访问Application,Request,Response时也需要加上HttpContext.Current。而且不能访问IPrincipal.IsInRole、页面的控件和ViewState。原因应该就是Ajax.net的工作方式造成的。