今天想對前幾天學習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的工作方式造成的。