.net困惑已经的bug,当大量用户访问时才出现
baya 2014-10-23 09:02:34 程序一切正常,发布到正式环境也正常,可是运行一段时间,可能是人多的时候,对象就不存在了。需要重启应用程序池才好。这是什么原因呢? 这究竟是程序问题?还是web府二期问题?请高手指教!
日志信息:未将对象引用设置到对象的实例。在 Hyun.WebService.MainWebService.<>c__DisplayClass2.<HasPermission>b__0(VRolePermissionList rp)
在 Hyun.Entities.ListBase`1.ApplyFilter(Predicate`1 match)
在 Hyun.WebService.MainWebService.HasPermission(Result r)
程序代码
/// <summary>
/// 所有角色权限列表
/// </summary>
private static VList<VRolePermissionList> rolePermissionList = new VRolePermissionListService().GetAll();
/// <summary>
/// 用户权限判断
/// </summary>
/// <param name="funIdCode">功能ID、或功能Code</param>
/// <returns>true:有权,false:无权</returns>
[WebMethod(EnableSession = true)]
private bool HasPermission(Result r)
{
//用户、角色 页面权限验证
string url = HttpContext.Current.Request.RawUrl;
url = url.Substring(url.LastIndexOf("/") + 1);
if (VUser.IsUser)
{
if (rolePermissionList == null || rolePermissionList.Count <= 0)
{
rolePermissionList = new VRolePermissionListService().GetAll();
}
try
{
rolePermissionList.RemoveFilter();
}
catch (Exception e)
{
FileLog.LogMessage("rolePermissionList.RemoveFilter():" + e.ToString(), Constant.ERROR_LOG_FILE_PATH);
}
try
{
rolePermissionList.ApplyFilter(delegate(VRolePermissionList rp)
{
return VUser.IsRole(rp.RoleId) && string.Equals(rp.Path, url, StringComparison.OrdinalIgnoreCase);
});
}
catch (Exception e)
{
FileLog.LogMessage("rolePermissionList.ApplyFilter:" + e.ToString(), Constant.ERROR_LOG_FILE_PATH);
}
if (rolePermissionList.Count > 0)
{
return true;
}
}
r.flag = -2;
r.msg = string.Format("没有对{0}的权限", url);
return false;
}