VS2005(c#)專案除錯問題解決方案集錦 ZT

asword發表於2007-07-26
上一次整了個VS2003的,結果反應甚好,當然能幫助大家在程式除錯過程中提高效率不失是一件快樂的事,這次也是根據一個專案開發過程中所碰到的種種問題,俺把他記下來了,同時在網站蒐集了一些問題及解決方法,一來做個記錄好讓自己以後可以有章可查,二來發出來給大家分享.分享技術,分享快樂,一直是俺們網站電子期刊的宗旨.希望大家喜歡:) 廢話少說:我們要給大家有用的東西才行,希望以下這些東東,能給大家帶來幫助.謝謝:) 如果您認為這篇文章對您有用,歡迎您轉載,請您註明來自"德仔工作室",俺們是不會去索要專利費的,你放心.[@more@]

相關連線:

德仔工作室: (歡迎來看看)

德仔工作室Web技術電子期刊: (歡迎下載來瞧瞧,假如對您有用的話)

vs.Net2003無法開啟或建立Web應用程式若干解決辦法
blog/blogview.asp?logID=77&cateID=8

歡迎大家批評指正哈 ^_^ ^_^ 偶給出200分送給大家哈


1.檢測到有潛在危險的 Request.Form 值

原因:

(1)在提交資料的頁面或webconfig中沒有對validateRequest的屬性進行正確的設定

(2)HTML裡面寫了兩個

引起

解決:
方案一: 在.aspx檔案頭中加入這句:
方案二: 修改web.config檔案:





因為validateRequest預設值為true。只要設為false即可。


註明:(感謝 隨風流月 在水一方獨舞的修正)

如果設定EnableViewState="False" 和EnableViewStateMac = "False" ,那麼客戶端就可以篡改viewstate後回發給伺服器,而伺服器不能識別viewstate已經被篡改了,從而導致安全問題。
如果設定(asp.net 預設的設定)EnableViewState="true" 和EnableViewStateMac = "true",則服務端就可以識別篡改後的viewstate,一經識別viewstate被篡改,伺服器可以關閉相應的操作


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中的路徑配置不正確所致

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資料為空。不能對空值呼叫此方法或屬性


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.物件名'***** '無效

原因:當前使用的資料庫中沒有*****這張表

解決: 檢視是否程式中是否寫錯了所呼叫的表的名稱或看一下SQL資料庫中是否存在你所呼叫的表


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.記住繫結資料的正確語法(有以下幾種方式:: #Eval(“欄位名”)%> 等)

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). 重新啟動計算機。

微軟說明:

21.vs2005不能從原始檔模式切換到檢視模式

解決方法:dos下執行下 devenv /resetskippkgs (win+r cmd)

22.Validation of viewstate MAC failed
解決辦法:頁面的頂部page加 EnableViewState="False" EnableViewStateMac = "False" 來解決這個問題

23.Automation server can't create object"(Automation 伺服器不能建立對)

解決辦法:執行: Regsvr32 scrrun.dll 即可。

24.包載入失敗

未能正確載入包"Visual Web Developer Trident Designer Package"(GUID =

{30AE7E28-6C02-496D-8E43-85F7A90AEFF1}。

解決方法:
1、設定系統變數 VsLogActivity=1

2、在%APPDATA%MicrosoftVisualStudio8.0資料夾下建立檔案ActivityLog.xml

Error

Microsoft Visual Studio

LoadLibrary failed for package [Visual Web Developer Trident Designer Package]

{30AE7E2B-6C02-496D-8E43-85F7A90AEFF1}


--------------------------------------------------------------------------------
8007007e

c:Program FilesMicrosoft Visual Studio 8Common7Packages ridsn.dll

3、從 WINNTMicroSoft.NETFrameworkv2.0.xxx 複製檔案gdiplus.dll 到 Program FilesVisual Studio 8Common7Packages資料夾下

4、在命令列下執行命令 :devenv /resetskippkgs

25.Error spawning 'cmd.exe'.
解決方案:把cmd.exe 複製到VS安裝目錄下的VC/BIN目錄裡,可以解決問題。


26.嘗試讀取或寫入受保護的記憶體

解決:硬體有問題,一般記憶體有問題

27.無法在證照儲存區中找到清單簽名證照

解決方法:用記事本開啟專案的.csproj檔案,刪除類似

28.該專案中不存在目標“ResolveKeySource”。
原因:這個問題很罕見,查詢國外相關資料後,大致說是由於部署的不是一個標準的solution, 需要在VS自帶的命令提示中執行下面這個東西恢復


解決方法:
(1).將下列程式碼存為XML檔案,命名為TestBuild.xml
http://schemas.microsoft.com/developer/msbuild/2003">

Data Source=.sql2005%3BUser ID=SqlUser%3BPooling=False%3BPassword=X

Properties="TargetConnectionString=$(TargetConnectionString)"

Projects="@(DatabaseProject)"

Targets="Build;Deploy">



(2)在命令提示中執行:msbuild /t:BuildAllDatabaseProjects TestBuild.xml

29.不能將值 NULL 插入列 '**'

原因:這是資料庫表設計的錯誤,所涉及的表的欄位中設定了不能為空的屬性,但是傳入的值為null,所以報錯

解決方法:檢視是否所傳入的值是否為Null,或修改資料庫中表的所對應的列的屬性


30.未能載入型別"名稱空間.類"...

原因:
(1)專案修改後沒有進行編譯
(2)專案中原有的名稱空間可能被修改了
(3)專案中所需要的ascx或其他頁面不存在,或不包含在專案中

解決方法:
(1)在修改完成之後,請重新生成或編譯整個專案或解決方案
(2)手工修改所改動的名稱空間,注意名稱的大小寫,再重新編譯
(3)將相關的檔案包含在專案中


31.不能訪問只讀檔案“****.***"
解決方案:
給虛擬目錄所對應的檔案加上“Everyone/寫入”許可權即可

32.請求因 HTTP 狀態 401 失敗:Access Denied
解決方法:在iis資訊伺服器上把匿名訪問和允許iis控制密碼給勾上

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/82387/viewspace-928346/,如需轉載,請註明出處,否則將追究法律責任。

相關文章