1、当创建一个类验证是否登陆时,其它页面继承该类时,出现错误。
public class LoinedPage:System.Web.UI.Page
{
public LoinedPage()
{
var aa=Session["dd"];
}
}
public partial class LoginCheck : LoinedPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
例外詳細資訊: System.Web.HttpException: 只有在組態檔或 Page 指示詞中將 enableSessionState 設為 true 時,才能使用工作階段狀態。同時請確定 System.Web.SessionStateModule 或自訂工作階段狀態模組已包括在應用程式組態的 <configuration>\<system.web>\<httpModules> 區段中。
原因:var aa=Session["dd"];需要用到Session,但是当生成该类时,还无法使用Session,所以会报错。应该将其放到LoginedPage类的Page_Load方法中,因为页面生命周期在Page_Load中就可以使用了。
2、在Sql Server2008中附加数据库,失败。提示无法打开物理文件 "E:\db\homework.mdf"。操作系统错误 5:"5(拒绝访问。)"。 (Microsoft SQL Server,错误: 5120)
解决方法:将该数据库文件所在的文件夹权限改为User组为完全控制权限即可。
3、登陆检查代码不要写在检查类中的Page_Load方法中,因为若写在Page_Load中,在页面中的Page_Load方法会将父类中的Page_Load方法冲掉。可以将登陆检查代码写到PreLoad事件中。
public class LoginedPage : System.Web.UI.Page
{
public LoginedPage()
{
//
//TODO: 在此处添加构造函数逻辑
//
PreLoad += OnLineCheck;
}
public void OnLineCheck(object sender, EventArgs e)
{
if (Session["userObj"] == null)
{
//Response.Redirect("index.htm");
}
}
}
public partial class ml : LoginedPage
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
4、在使用Linq时,出现此提示: {"LINQ to Entities 不支援方法 'Single'。請考慮改用方法 'First'。"} 。经查询发现是Linq To Entities为了保证和其它数据库兼容,所以不支持Single方法,此时可以用First<>进行替换。
protected void Button2_Click(object sender, EventArgs e)
{
testdbModel.testdbEntities1 te = new testdbModel.testdbEntities1();
var lin = (testdbModel.T_Keywords)((from t in te.T_Keywords where t.ID == 6 select t).FirstOrDefault<testdbModel.T_Keywords>());
if (lin != null)
{
lin.Keyword = "修改了"+DateTime.Now.ToString();
te.SaveChanges();
ListView1.DataBind();
}
}
5、Linq执行数据库操作时,不会立加载到内存中。调用AsEnumerable<>、ToList<>、ToArray<>后,则会立即执行。
var linq=(from t in te.T_Keywords where t.ID == 6 select t).AsEnumerable<testdbModel.T_Keywords>().ToArray<testdbModel.T_Keywords>().ToList<testdbModel.T_Keywords>();