1.檢測到有潛在危險的 Request.Form 值
原因:
(1)在提交資料的頁面或webconfig中沒有對validateRequest的屬性進行正確的設定
(2)HTML裡面寫了兩個<form>引起
解決:
方案一: 在.aspx檔案頭中加入這句: <%@ Page validateRequest="false" %>
方案二: 修改web.config檔案:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
因為validateRequest預設值為true。只要設為false即可。
2.“在沒有任何資料時進行無效的讀取嘗試”解決辦法
原因:
所返回的sqldatareader無資料記錄,但沒有作記錄判斷力處理。返回的是空值
加上判斷即可: if (reader.read()) { TextName.Text =
reader["FieldName"].ToString(); }
3.資料為空白。不能對空值調用此方法或屬性。
原因:
若對象是null,那麼調用對象的方法例如ToString()肯定出錯一般是資料庫欄位的值為空白
在grideview等資料控制項常出現
解決:因此建議作NULL處理
4.閱讀器關閉時 FieldCount 的嘗試無效
原因:
使用了SqlDataReader來綁定資料後,將connection對象作了Close()處理
類似
public SqlDataReader GetSomething()
{
conn.open();
SqlDataReader reader =
sqlcmd.ExcecutReader(CommandBehavior.CloseConnection));
conn.close();// occur error here
return reader;
}
在綁定的時候調用了這個方法來指定資料來源。如果使用這個方法則需要在調用函數中關閉Re
ader這樣conn就可以自動關閉。
如果是使用的是SqlDataAdapter和DataSet那麼請去掉顯式關閉conn的調用。或者在finally
中調用之。
5.未能映射路徑
原因:可能是在webconfig中的路徑配置不正確所致,在FCKEditor的配置中這種問題比較突出
<add key="FCKeditor:BasePath" value="~/admin/fckeditor/"/>
<add key="FCKeditor:UserFilesPath" value="/UserFiles/" />
6.Unreachable code detected
原因:
一般是在異常處理理或傳回值時使用了 throw 或return ,可能是其位置放在前面,造成後面的代碼執行到了。
解決:
把相關的異常拋出處理的語句(throw)或return 的語句放到代理執行的最後一行。
7.索引超出範圍。必須為非負值並小於集合大小
原因:
(1).沒有設定DATAKEYFIELD設為資料庫中相對應的唯一欄位(一般是主鍵)
(2).DataGrid1.Columns > e.Item.Cells
解決:
(1).設定datakeyfield
(2).加入判斷語句datagrid1.item.count (datagrid可以是其它相類似的伺服器控制項)
8. 錯誤:未找到路徑“C:\”的一部分。
說明:
執行當前 Web 請求期間,出現未處理的異常。請檢查堆疊追蹤資訊,以瞭解有關該錯誤以及代碼中導致錯誤的出處的詳細資料。
異常詳細資料:System.IO.DirectoryNotFoundException:未找到路徑“C:\”的一部分。
解決:
在C盤加上Users組讀取許可權就可以訪問了,但出於伺服器安全問題,應該把UserS組許可權去掉了,相繼的問題以不同的錯誤方式顯示出來了,如下面講到的問題,然後再一一解決。
9. 資料來源不支援伺服器端的資料分頁
解決方案:
不要使用DataReader,改成使用DataSet:或使用自訂分頁形式,不採用vs.net提供的分頁功能
OleDbDataAdapter da = new OleDbDataAdapter(sql, connection);
DataSet ds2 = new DataSet();
da.Fill(ds2, "News");
GridView1.DataSource = ds2;
GridView1.DataBind();
10.對象名'***** '無效
原因:當前使用的資料庫中沒有*****這張表,或者當前資料庫連接帳號沒有該對象的操作許可權
解決: 原因1的解決辦法:查看是否程式中是否寫錯了所調用的表的名稱或看一下SQL資料庫中是否存在你所調用的表 原因2的解決方案:將你資料庫的所有的對象擁有者改為dbo.
解決方案(本方案來自於網路,經過實驗為有效)如下:
使用擁有的帳號串連查詢分析器,運行如下sql語句:
可以使用 sp_changedbowner 更改資料庫的所有者。
方法一:右鍵點擊該表-》設計表,在上面的一排小表徵圖中,點最後一個“條件約束”,點“表”頁,在裡面更改所有者。(若沒有條件約束的小表徵圖,可以點右鍵,能看到一個“check約束”的選項)
方法二:利用指令碼直接執行,用系統帳號或者超戶登陸到該資料庫,然後執行下面語句:
sp_configure 'allow updates','1' go reconfigure with override go update sysobjects set uid=1 where uid<>1 go sp_configure 'allow updates','0' go reconfigure with override /*批量替換
declare tb cursor local for select 'sp_changeobjectowner ''['+replace(user_name(uid),']',']]')+'].[' +replace(name,']',']]')+']'',''dbo''' from sysobjects where xtype in('U','V','P','TR','FN','IF','TF') and status>=0 open tb declare @s nvarchar(4000) fetch tb into @s while @@fetch_status=0 begin exec(@s) fetch tb into @s end close tb deallocate tb go
*/
11.在建立與伺服器的串連時出錯。在串連到 SQL Server 2005 時,在預設的設定下 SQL
Server 不允許進行遠端連線可能會導致此失敗。 (provider: 具名管道提供者,
error: 40 - 無法開啟到 SQL Server 的串連)
solution: 主機上需要用固定的IP地址或伺服器位址
12.SqlDateTime 溢出。必須介於 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之間。
出現這種問題``多半是因為你更新資料庫時``datetime欄位值為空白``預設插入0001年01月01
日``造成datetime類型溢出
13.出現-------表示“屬性”,此處應為“方法”
原因:
1.VB與c#的方法,屬性的格式有所不一樣導致。
2.可能是在design中綁定資料的文法出現錯誤 解決: 1.記住屬性用[] 方法用()
2.記住綁定資料的正確文法(有以下幾種方式::<%Container.DataItem(“欄位名”)%> <%
#Eval(“欄位名”)%> <%Bind(“欄位名”)%>等)
14.未能從程式集“DAL, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null”中載入類型“DAL.SqlHelper”。
原因:修改了其他層後未能重新編譯成dll
解決:編譯一下(Rebuild)
15.為過程或函數 指定的參數太多,
solution:調用預存程序與定義的預存程序所用的參數數量或所執行的SQL語句中所傳入的參
數個數不一致(這是個SQL的錯誤)
解決方案:仔細檢查在預存程序中所設定的參數變數,與實際輸入的參數值是否一一對應
16.無法啟動調試,綁定控制代碼無效
原因:系統的Terminal Services沒有開啟
17.Unable to debugging on the web server.Debug failed because integrated windows authentication is not enable
解決方案:
開啟vs2005->工具(Tools)->選項(Option)->調試(debugging)->編輯並繼續(Edit and Continue)->全部打勾
18.Automation 操作中檔案名稱或類名未找到: 'RegExp'
解決方案:regsvr32 vbscript.dll
19.System.NullReferenceException: 未將對象引用設定到對象的執行個體。
原因:
(1)所設定的變數為空白值或沒有取到值,一般出現在傳遞參數的時候出現這個問題,也會在使用datagrid或gridview或datalist等資料控制項時出現.
(2)控制項名稱與codebehind裡面的沒有對應
(3)未用new初始化對象
(4)在程式中所引用的控制項不存在
解決方案:
(1)使用try..catch...finally捕捉錯誤,或直接用response.write()輸出所取的變數值
(2)查看代碼中是否存在未初始化的變數
20.錯誤 1718。檔案被數位簽章策略拒絕(安裝vs2005sp1時)解決方案:
(1). 單擊“開始”,單擊“運行”,鍵入 control admintools,然後單擊“確定”。
(2). 雙擊“本地安全性原則”。
(3). 單擊“軟體限制策略”。(注意:如果未列出軟體限制,請右擊“軟體限制策略”,然後單擊“建立策略”。 )
(4). 在“物件類型”下,雙擊“強制”。
(5). 單擊“除本地管理員以外的所有使用者”,然後單擊“確定”。
(6). 重新啟動電腦。
微軟說明:
http://support.microsoft.com/kb/925336