ASP.NET編譯執(zhí)行常見(jiàn)錯(cuò)誤及解決方法匯總
1.檢測(cè)到有潛在危險(xiǎn)的 Request.Form 值
原因:
(1)在提交數(shù)據(jù)的頁(yè)面或webconfig中沒(méi)有對(duì)validateRequest的屬性進(jìn)行正確的設(shè)置
(2)HTML里面寫(xiě)了兩個(gè)<form>引起
解決:
方案一: 在.aspx文件頭中加入這句: <%@ Page validateRequest="false" %>
方案二: 修改web.config文件:
<configuration>
<system.web>
<pages validateRequest="false" />
</system.web>
</configuration>
因?yàn)関alidateRequest默認(rèn)值為true。只要設(shè)為false即可。
2.“在沒(méi)有任何數(shù)據(jù)時(shí)進(jìn)行無(wú)效的讀取嘗試”解決辦法
原因:
所返回的sqldatareader無(wú)數(shù)據(jù)記錄,但沒(méi)有作記錄判斷力處理。返回的是空值
加上判斷即可: if (reader.read()) { TextName.Text =
reader["FieldName"].ToString(); }
3.數(shù)據(jù)為空。不能對(duì)空值調(diào)用此方法或?qū)傩浴?/STRONG>
原因:
若對(duì)象是null,那么調(diào)用對(duì)象的方法例如ToString()肯定出錯(cuò)一般是數(shù)據(jù)庫(kù)字段的值為空
在grideview等數(shù)據(jù)控件常出現(xiàn)
解決:因此建議作NULL處理
4.閱讀器關(guān)閉時(shí) FieldCount 的嘗試無(wú)效
原因:
使用了SqlDataReader來(lái)綁定數(shù)據(jù)后,將connection對(duì)象作了Close()處理
類(lèi)似
public SqlDataReader GetSomething()
{
conn.open();
SqlDataReader reader =
sqlcmd.ExcecutReader(CommandBehavior.CloseConnection));
conn.close();// occur error here
return reader;
}
在綁定的時(shí)候調(diào)用了這個(gè)方法來(lái)指定數(shù)據(jù)源。如果使用這個(gè)方法則需要在調(diào)用函數(shù)中關(guān)閉Re
ader這樣conn就可以自動(dòng)關(guān)閉。
如果是使用的是SqlDataAdapter和DataSet那么請(qǐng)去掉顯式關(guān)閉conn的調(diào)用。或者在finally
中調(diào)用之。
5.未能映射路徑
原因:可能是在webconfig中的路徑配置不正確所致,在FCKEditor的配置中這種問(wèn)題比較突出
<add key="FCKeditor:BasePath" value="~/admin/fckeditor/"/>
<add key="FCKeditor:UserFilesPath" value="/UserFiles/" />
6.Unreachable code detected
原因:
一般是在異常處理理或返回值時(shí)使用了 throw 或return ,可能是其位置放在前面,造成后面的代碼執(zhí)行到了。
解決:
把相關(guān)的異常拋出處理的語(yǔ)句(throw)或return 的語(yǔ)句放到代理執(zhí)行的最后一行。
7.索引超出范圍。必須為非負(fù)值并小于集合大小
原因:
(1).沒(méi)有設(shè)置DATAKEYFIELD設(shè)為數(shù)據(jù)庫(kù)中相對(duì)應(yīng)的唯一字段(一般是主鍵)
(2).DataGrid1.Columns > e.Item.Cells
解決:
(1).設(shè)置datakeyfield
(2).加入判斷語(yǔ)句datagrid1.item.count (datagrid可以是其它相類(lèi)似的服務(wù)器控件)
8. 錯(cuò)誤:未找到路徑“C:\”的一部分。
說(shuō)明:
執(zhí)行當(dāng)前 Web 請(qǐng)求期間,出現(xiàn)未處理的異常。請(qǐng)檢查堆棧跟蹤信息,以了解有關(guān)該錯(cuò)誤以及代碼中導(dǎo)致錯(cuò)誤的出處的詳細(xì)信息。
異常詳細(xì)信息:System.IO.DirectoryNotFoundException:未找到路徑“C:\”的一部分。
解決:
在C盤(pán)加上Users組讀取權(quán)限就可以訪問(wèn)了,但出于服務(wù)器安全問(wèn)題,應(yīng)該把UserS組權(quán)限去掉了,相繼的問(wèn)題以不同的錯(cuò)誤方式顯示出來(lái)了,如下面講到的問(wèn)題,然后再一一解決。
9. 數(shù)據(jù)源不支持服務(wù)器端的數(shù)據(jù)分頁(yè)
解決方法:
不要使用DataReader,改成使用DataSet:或使用自定義分頁(yè)形式,不采用vs.net提供的分頁(yè)功能
OleDbDataAdapter da = new OleDbDataAdapter(sql, connection);
DataSet ds2 = new DataSet();
da.Fill(ds2, "News");
GridView1.DataSource = ds2;
GridView1.DataBind();
10.對(duì)象名'***** '無(wú)效
原因:當(dāng)前使用的數(shù)據(jù)庫(kù)中沒(méi)有*****這張表,或者當(dāng)前數(shù)據(jù)庫(kù)連接賬號(hào)沒(méi)有該對(duì)象的操作權(quán)限
解決: 原因1的解決辦法:查看是否程序中是否寫(xiě)錯(cuò)了所調(diào)用的表的名稱(chēng)或看一下SQL數(shù)據(jù)庫(kù)中是否存在你所調(diào)用的表 原因2的解決方法:將你數(shù)據(jù)庫(kù)的所有的對(duì)象擁有者改為dbo.
解決方案(本方案來(lái)自于網(wǎng)絡(luò),經(jīng)過(guò)實(shí)驗(yàn)為有效的)如下:
使用擁有的賬號(hào)連接查詢(xún)分析器,運(yùn)行如下sql語(yǔ)句:
可以使用 sp_changedbowner 更改數(shù)據(jù)庫(kù)的所有者。
方法一:右鍵點(diǎn)擊該表-》設(shè)計(jì)表,在上面的一排小圖標(biāo)中,點(diǎn)最后一個(gè)“條件約束”,點(diǎn)“表”頁(yè),在里面更改所有者。(若沒(méi)有條件約束的小圖標(biāo),可以點(diǎn)右鍵,能看到一個(gè)“check約束”的選項(xiàng))
方法二:利用腳本直接執(zhí)行,用系統(tǒng)帳號(hào)或者超戶登陸到該數(shù)據(jù)庫(kù),然后執(zhí)行下面語(yǔ)句:
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.在建立與服務(wù)器的連接時(shí)出錯(cuò)。在連接到 SQL Server 2005 時(shí),在默認(rèn)的設(shè)置下 SQL
Server 不允許進(jìn)行遠(yuǎn)程連接可能會(huì)導(dǎo)致此失敗。 (provider: 命名管道提供程序,
error: 40 - 無(wú)法打開(kāi)到 SQL Server 的連接)
solution: 主機(jī)上需要用固定的IP地址或服務(wù)器地址
12.SqlDateTime 溢出。必須介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之間。
出現(xiàn)這種問(wèn)題``多半是因?yàn)槟愀聰?shù)據(jù)庫(kù)時(shí)``datetime字段值為空``默認(rèn)插入0001年01月01
日``造成datetime類(lèi)型溢出
13.出現(xiàn)-------表示“屬性”,此處應(yīng)為“方法”
原因:
1.VB與c#的方法,屬性的格式有所不一樣導(dǎo)致。
2.可能是在design中綁定數(shù)據(jù)的語(yǔ)法出現(xiàn)錯(cuò)誤 解決: 1.記住屬性用[] 方法用()
2.記住綁定數(shù)據(jù)的正確語(yǔ)法(有以下幾種方式::<%Container.DataItem(“字段名”)%> <%
#Eval(“字段名”)%> <%Bind(“字段名”)%>等)
14.未能從程序集“DAL, Version=1.0.0.0, Culture=neutral,
PublicKeyToken=null”中加載類(lèi)型“DAL.SqlHelper”。
原因:修改了其他層后未能重新編譯成dll
解決:編譯一下(Rebuild)
15.為過(guò)程或函數(shù) 指定的參數(shù)太多,
solution:調(diào)用存儲(chǔ)過(guò)程與定義的存儲(chǔ)過(guò)程所用的參數(shù)數(shù)量或所執(zhí)行的SQL語(yǔ)句中所傳入的參
數(shù)個(gè)數(shù)不一致(這是個(gè)SQL的錯(cuò)誤)
解決方案:仔細(xì)檢查在存儲(chǔ)過(guò)程中所設(shè)定的參數(shù)變量,與實(shí)際輸入的參數(shù)值是否一一對(duì)應(yīng)
16.無(wú)法啟動(dòng)調(diào)試,綁定句柄無(wú)效
原因:系統(tǒng)的Terminal Services沒(méi)有開(kāi)啟
17.Unable to debugging on the web server.Debug failed because integrated windows authentication is not enable
解決方法:
打開(kāi)vs2005->工具(Tools)->選項(xiàng)(Option)->調(diào)試(debugging)->編輯并繼續(xù)(Edit and Continue)->全部打勾
18.Automation 操作中文件名或類(lèi)名未找到: 'RegExp'
解決方法:regsvr32 vbscript.dll
19.System.NullReferenceException: 未將對(duì)象引用設(shè)置到對(duì)象的實(shí)例。
原因:
(1)所設(shè)置的變量為空值或沒(méi)有取到值,一般出現(xiàn)在傳遞參數(shù)的時(shí)候出現(xiàn)這個(gè)問(wèn)題,也會(huì)在使用datagrid或gridview或datalist等數(shù)據(jù)控件時(shí)出現(xiàn).
(2)控件名稱(chēng)與codebehind里面的沒(méi)有對(duì)應(yīng)
(3)未用new初始化對(duì)象
(4)在程序中所引用的控件不存在
解決方法:
(1)使用try..catch...finally捕捉錯(cuò)誤,或直接用response.write()輸出所取的變量值
(2)查看代碼中是否存在未初始化的變量
20.錯(cuò)誤 1718。文件被數(shù)字簽名策略拒絕(安裝vs2005sp1時(shí))解決方法:
(1). 單擊“開(kāi)始”,單擊“運(yùn)行”,鍵入 control admintools,然后單擊“確定”。
(2). 雙擊“本地安全策略”。
(3). 單擊“軟件限制策略”。(注意:如果未列出軟件限制,請(qǐng)右擊“軟件限制策略”,然后單擊“新建策略”。 )
(4). 在“對(duì)象類(lèi)型”下,雙擊“強(qiáng)制”。
(5). 單擊“除本地管理員以外的所有用戶”,然后單擊“確定”。
(6). 重新啟動(dòng)計(jì)算機(jī)。
微軟說(shuō)明:
http://support.microsoft.com/kb/925336
相關(guān)文章
ASP.NET設(shè)計(jì)網(wǎng)絡(luò)硬盤(pán)之兩重要類(lèi)代碼
要進(jìn)行“網(wǎng)絡(luò)硬盤(pán)”功能設(shè)計(jì),首先要熟悉.NET中處理文件和文件夾的操作。File類(lèi)和Directory類(lèi)是其中最主要的兩個(gè)類(lèi)。了解它們將對(duì)后面功能的實(shí)現(xiàn)提供很大的便利2012-10-10
.NET?Core使用Worker?Service創(chuàng)建服務(wù)
這篇文章介紹了.NET?Core使用Worker?Service創(chuàng)建服務(wù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-02-02
.net MVC使用Session驗(yàn)證用戶登錄(4)
這篇文章主要為大家詳細(xì)介紹了.net MVC使用Session驗(yàn)證用戶登錄的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-04-04
ASP.NET中JSON的序列化和反序列化使用說(shuō)明
JSON是專(zhuān)門(mén)為瀏覽器中的網(wǎng)頁(yè)上運(yùn)行的JavaScript代碼而設(shè)計(jì)的一種數(shù)據(jù)格式。2011-07-07
asp.net 防止用戶通過(guò)后退按鈕重復(fù)提交表單
經(jīng)過(guò)一番仔細(xì)的尋尋覓覓之后,我發(fā)現(xiàn)仍舊無(wú)法找出真正能夠完全禁用瀏覽器后退按鈕的辦法。所有這里介紹的方法都能夠在不同程度上、以不同的方式禁止用戶返回前一頁(yè)面,但它們都有各自的局限。2009-11-11
利用VS2019創(chuàng)建Web項(xiàng)目并發(fā)送到IIS及IIS與ASP.NET配置教程
這篇文章主要介紹了利用VS2019創(chuàng)建Web項(xiàng)目,并發(fā)送到IIS,以及IIS與ASP.NET配置,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-03-03
關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細(xì)介紹
本篇文章小編將為大家介紹,關(guān)于WPF使用MultiConverter控制Button狀態(tài)的詳細(xì)介紹。需要的朋友參考下2013-04-04
SQL Server 2008 R2:error 26 開(kāi)啟遠(yuǎn)程連接詳解
本篇文章小編為大家介紹,SQL Server 2008 R2:error 26 開(kāi)啟遠(yuǎn)程連接詳解。需要的朋友參考下2013-04-04
ASP.NET Core環(huán)境設(shè)置教程(2)
這篇文章主要為大家詳細(xì)介紹了Asp.net Core環(huán)境設(shè)置教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-06-06

