ASP.NET編譯執行常見錯誤及解決方案匯總之一

來源:互聯網
上載者:User

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

*/

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.