網站運行環境:IIS 7.0, windows 2008 R2, MS Sql Server 2005
網站開發:asp.net
人民幣100元求助。
我實在找不出來哪里型別不匹配。rmb求助,決不食言。
---
報錯截圖如下:

報錯部分的原始碼是(第40行):
protected void Button1_Click(object sender, System.EventArgs e)
{
UserData userData;
if(!Page.IsValid)
{
return ;
}
//
//判斷在登錄之前用戶有沒有注銷,如果沒有,則先注銷
//
if(this.loginUserData != null)
{
//
//修改該用戶的最后退出登錄時間
//
ApplicationAssert.Check(false , "退出成功!" ,ApplicationAssert.UserLogout , this.loginUserData);
this.loginUserData.Tables[UserData.USERS_TABLE].Rows[0][UserData.LASTLOGOUTTIME_FIELD] = DateTime.Now;
(new UserSystem()).ModifyUser(this.loginUserData);
//
//注銷所有資料
//
loginUserData = null;
Users = null;
FormsAuthentication.SignOut();
Request.Cookies.Clear();
Session.Clear();
}
//
//給密碼加密
//
SHA1 sha1 = SHA1.Create();
byte[] password = sha1.ComputeHash(Encoding.Unicode.GetBytes(MPwd.Text.Trim()));
//
//根據用戶名和密碼得到相應的資料
//
userData = (new UserSystem()).GetUserDataByName(MName.Text.Trim() , password);
//
//根據得到的資料,判斷用戶登錄是否成功,如成功則創建身份證票,并加入角色
//
if(userData == null)
{
LoginInfo.Visible=true;
ApplicationAssert.Check(false,"登錄失敗!用戶名:"+MName.Text+"",ApplicationAssert.UserLogin,this.loginUserData);
return;
}
GetUserDataByName函式已封裝在dll里,原始碼是:
public UserData GetUserDataByName(string userName, byte[] userPwd)
{
ApplicationAssert.CheckCondition(userName != string.Empty, "登錄時必須輸入用戶名!", ApplicationAssert.LineNumber);
ApplicationAssert.CheckCondition(userPwd.Length != 0, "登錄時必須輸入用戶密碼!", ApplicationAssert.LineNumber);
UserData byName = new UserRules().GetByName(userName);
if (byName != null)
{
DataRowCollection rows = byName.Tables["Admin"].Rows;
if (rows.Count == 1)
{
byte[] storedPassword = (byte[]) rows[0]["UserPwd"];
if (this.ComparePasswords(storedPassword, userPwd))
{
return byName;
}
return null;
}
}
return null;
}
uj5u.com熱心網友回復:
我猜測可能并不是原始碼的問題,或者是IIS配置上的問題。能解決該問題的朋友,可以私信我,或者回帖。
uj5u.com熱心網友回復:
強制轉換出錯了吧?
轉換和判斷代碼注釋掉,日志記錄 rows[0]["UserPwd"] 的值看看是什么
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/106162.html
標籤:ASP.NET
上一篇:“System.Runtime.InteropServices.COMException”型別的未經處理的例外在 mscorlib.dll 中發生
