熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

ASP.NET常見錯誤大全

2013-11-12 23:38:29  來源: .NET編程 

  檢測到有潛在危險的 RequestForm 值

  原因:

  ()在提交數據的頁面或webconfig中沒有對validateRequest的屬性進行正確的設置

  ()HTML裡面寫了兩個<form>引起

  解決:

  方案一aspx文件頭中加入這句 <%@ Page validateRequest=false %>

  方案二 修改nfig文件:

  <configuration>

  <systemweb>

  <pages validateRequest=false />

  </systemweb>

  </configuration>

  因為validateRequest默認值為true只要設為false即可

  在沒有任何數據時進行無效的讀取嘗試解決辦法

  原因

  所返回的sqldatareader無數據記錄但沒有作記錄判斷力處理返回的是空值

  加上判斷即可 if (readerread()) { TextNameText =

  reader[FieldName]ToString(); }

  數據為空不能對空值調用此方法或屬性

  原因:

  若對象是null那麼調用對象的方法例如ToString()肯定出錯一般是數據庫字段的值為空

  在grideview等數據控件常出現

  解決:因此建議作NULL處理

  閱讀器關閉時 FieldCount 的嘗試無效

  原因:

  使用了SqlDataReader來綁定數據後將connection對象作了Close()處理

  類似

  public SqlDataReader   GetSomething()

  {

  connopen();

  SqlDataReader   reader =

  sqlcmdExcecutReader(CommandBehaviorCloseConnection));

  connclose();// occur error   here

  return   reader;

  }

  在綁定的時候調用了這個方法來指定數據源如果使用這個方法則需要在調用函數中關閉Re

  ader這樣conn就可以自動關閉

  如果是使用的是SqlDataAdapter和DataSet那麼請去掉顯式關閉conn的調用或者在finally

  中調用之

  未能映射路徑

  原因:可能是在webconfig中的路徑配置不正確所致在FCKEditor的配置中這種問題比較突出

  <add key=FCKeditor:BasePath value=~/admin/fckeditor//>

  <add key=FCKeditor:UserFilesPath value=/UserFiles/ />

  Unreachable code detected

  原因

  一般是在異常處理理或返回值時使用了 throw 或return 可能是其位置放在前面造成後面的代碼執行到了

  解決

  把相關的異常拋出處理的語句(throw)或return 的語句放到代理執行的最後一行

  索引超出范圍必須為非負值並小於集合大小

  原因

  ()沒有設置DATAKEYFIELD設為數據庫中相對應的唯一字段(一般是主鍵)

  ()DataGridColumns > eItemCells

  解決

  ()設置datakeyfield

  ()加入判斷語句unt (datagrid可以是其它相類似的服務器控件)

  數據源不支持服務器端的數據分頁

  解決方法:

  不要使用DataReader改成使用DataSet或使用自定義分頁形式不采用提供的分頁功能

  OleDbDataAdapter da = new OleDbDataAdapter(sql connection);

  DataSet ds = new DataSet();

  daFill(ds News);

  GridViewDataSource = ds;

  GridViewDataBind();

  對象名***** 無效

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

  解決: 查看是否程序中是否寫錯了所調用的表的名稱或看一下SQL數據庫中是否存在你所調用的表

  在建立與服務器的連接時出錯在連接到 SQL Server 在默認的設置下 SQL

  Server 不允許進行遠程連接可能會導致此失敗 (provider: 命名管道提供程序

  error: 無法打開到 SQL Server 的連接)

  solution: 主機上需要用固定的IP地址或服務器地址

  SqlDateTime 溢出必須介於 // :: AM 和 // :: PM

  之間

  出現這種問題``多半是因為你更新數據庫時``datetime字段值為空``默認插入

  日``造成datetime類型溢出

  出現表示屬性此處應為方法

  原因:

  VB與c#的方法屬性的格式有所不一樣導致

  可能是在design中綁定數據的語法出現錯誤 解決: 記住屬性用[] 方法用()

  記住綁定數據的正確語法(有以下幾種方式::<%ContainerDataItem(字段名)%> <%

  #Eval(字段名)%> <%Bind(字段名)%>等)

  未能從程序集DAL Version= Culture=neutral

  PublicKeyToken=null中加載類型DALSqlHelper

  原因:修改了其他層後未能重新編譯成dll

  解決:編譯一下(Rebuild)

  為過程或函數 指定的參數太多

  solution:調用存儲過程與定義的存儲過程所用的參數數量或所執行的SQL語句中所傳入的參

  數個數不一致(這是個SQL的錯誤)

  解決方案:仔細檢查在存儲過程中所設定的參數變量與實際輸入的參數值是否一一對應

  無法啟動調試綁定句柄無效

  原因:系統的Terminal   Services沒有開啟

  Unable to debugging on the web serverDebug failed because integrated windows authentication is not enable

  解決方法:

  打開vs>工具(Tools)>選項(Option)>調試(debugging)>編輯並繼續(Edit and Continue)>全部打勾

  Automation 操作中文件名或類名未找到: RegExp

  解決方法:regsvr vbscriptdll

  SystemNullReferenceException: 未將對象引用設置到對象的實例

  原因:

  ()所設置的變量為空值或沒有取到值一般出現在傳遞參數的時候出現這個問題也會在使用datagrid或gridview或datalist等數據控件時出現

  ()控件名稱與codebehind裡面的沒有對應

  ()未用new初始化對象

  ()在程序中所引用的控件不存在

  解決方法:

  ()使用trycatchfinally捕捉錯誤或直接用responsewrite()輸出所取的變量值

  ()查看代碼中是否存在未初始化的變量

  錯誤 文件被數字簽名策略拒絕(安裝vssp時)解決方法:

  () 單擊開始單擊運行鍵入 control admintools然後單擊確定

  () 雙擊本地安全策略

  () 單擊軟件限制策略(注意如果未列出軟件限制請右擊軟件限制策略然後單擊新建策略 )

  ()對象類型雙擊強制

  () 單擊除本地管理員以外的所有用戶然後單擊確定

  () 重新啟動計算機

  微軟說明

  

  vs不能從源文件模式切換到視圖模式

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

  Validation of viewstate MAC failed

  解決辦法:頁面的頂部page加 EnableViewState=False EnableViewStateMac = False 來解決這個問題

  Automation server cant create object(Automation 服務器不能創建)

  解決辦法:運行: Regsvr scrrundll 即可

  包加載失敗

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

  {AEECDEFAAEFF}

  解決方法:

  設置系統變量 VsLogActivity=

  在%APPDATA%\Microsoft\VisualStudio\\文件夾下創建文件ActivityLogxml

  Error

  Microsoft Visual Studio

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

  {AEEBCDEFAAEFF}

  

  e

  c:\Program Files\Microsoft Visual Studio \Common\Packages\tridsndll

  從 WINNT\MicroSoftNET\Framework\vxxx 復制文件gdiplusdll 到 Program Files\Visual Studio \Common\Packages文件夾下

  在命令行下運行命令 devenv /resetskippkgs

  Error spawning cmdexe

  解決方案:把cmdexe 拷貝到VS安裝目錄下的VC/BIN目錄裡可以解決問題

  嘗試讀取或寫入受保護的內存

  解決:硬件有問題一般內存有問題

  無法在證書存儲區中找到清單簽名證書

  解決方法:用記事本打開項目的csproj文件刪除類似

  該項目中不存在目標ResolveKeySource

  原因:這個問題很罕見查詢國外相關資料後大致說是由於部署的不是一個標准的solution 需要在VS自帶的命令提示中運行下面這個東西恢復

  解決方法:

  ()將下列代碼存為XML文件命名為TestBuildxml

  <Project DefaultTargets=Build xmlns=>

  <PropertyGroup>

  <TargetConnectionString>Data Source=\sql%BUser ID=SqlUser%BPooling=False%BPassword=X</TargetConnectionString>

  </PropertyGroup>

  <ItemGroup>

  <DatabaseProject Include=Database\Databasedbproj/>

  <DatabaseProject Include=Database\Databasedbproj/>

  </ItemGroup>

  <Target Name=BuildAllDatabaseProjects>

  <MSBuild

  Properties=TargetConnectionString=$(TargetConnectionString)

  Projects=@(DatabaseProject)

  Targets=Build;Deploy>

  </MSBuild>

  </Target>

  ()在命令提示中運行:msbuild /t:BuildAllDatabaseProjects TestBuildxml

  </Project>

  不能將值 NULL 插入列 **

  原因:這是數據庫表設計的錯誤所涉及的表的字段中設置了不能為空的屬性但是傳入的值為null所以報錯

  解決方法:查看是否所傳入的值是否為Null或修改數據庫中表的所對應的列的屬性

  未能加載類型命名空間

  原因:

  ()項目修改後沒有進行編譯

  ()項目中原有的命名空間可能被修改了

  ()項目中所需要的ascx或其他頁面不存在或不包含在項目中

  解決方法:

  ()在修改完成之後請重新生成或編譯整個項目或解決方案

  ()手工修改所改動的命名空間注意名稱的大小寫再重新編譯

  ()將相關的文件包含在項目中

  不能訪問只讀文件*******

  解決方案:

  給虛擬目錄所對應的文件加上Everyone/寫入權限即可

  請求因 HTTP 狀態 失敗Access Denied解決方法:在iis信息服務器上把匿名訪問和允許iis控制密碼給勾上

  有一個無效 SelectedValue因為它不在項目列表中

  原因

  ()在沒有綁DropDownList之前就給DropDownListSelectedValue 賦值

  ()dropdownlist中出現了null值

  無法在已存在的情況下創建/影像復制該文件

  解決方案重新編譯項目(多個project全部重新編譯)關閉vs重新打開必要時重新啟動機子

  用戶 C\ASPNET 登錄失敗登錄失敗

  異常詳細信息: SystemDataSqlClientSqlException: 用戶 COO\ASPNET 登錄失敗

  這是怎麼回事啊?

  因為你的程序連接SQLServer的連接字符串是用了windows集成登陸你可以改成用數據庫帳號密碼登陸連接字符串的寫法是

  server=localhost;uid=sa;pwd=xxxx;database=master;

  server是數據庫服務器的機器名或者IP如果是同一台機可以用localhost

  uid是數據庫登陸帳號

  pwd是數據庫密碼

  database是數據庫初始owner名稱

  答案

  右擊桌面我的電腦選擇管理雙擊打開的計算機管理對話框中的本地用戶和組下的 在右邊的窗口中雙擊Remote Desktop Users在打開的Remote Desktop Users屬性對話框中 單擊添加在打開的添加用戶對話框中單擊高級再單擊立即查找按鈕搜索結果中 雙擊ASPNET(如果是IISNETWOR SERVERCE)再點擊兩次確定完成添加用戶

  單擊開始所有程序Microsoft SQL Server企業管理器在打開的控制台根目錄 選擇相應的數據庫右擊該數據庫的中的用戶選擇新建數據庫用戶新建用戶對話 框中點擊登陸名右側的下拉列表框選擇新建打開新建登陸對話框點擊名稱右側的 省略號按鈕在打開的對話框中將列出的名稱中選擇本機的名稱再在下面的名稱框中選定Remote Desktop Users然後點擊成員按鈕雙擊 ASPNET(如果是IISNETWOR SERVERCE然後點擊確定新建登陸對話 框中的默認設置的數據庫選項中選擇相應的數據庫名稱再在數據庫訪問選項下勾選相應 的數據庫點擊確定完成將默認的匿名用戶添加到SQL

  用戶 nt authority\network service 登錄失敗

  > sqlserver 調成sql server 和windows驗證模式

  >

  (以下方法僅供參考)

  第一步NT AUTHORITY\NETWORK SERVICE 添加到Administrator組中

  我的電腦>右鍵>管理>本地用戶和組

  選擇>雙擊Administrators>單擊添加>單擊高級>單擊立即查找>在下面的列表中選擇Network Service用戶>兩次單擊確定>加入

  第二步 在企業管理器中加入NetWord Service用戶

  打開Sql Server企業管理器>選擇數據庫實例>打開安全性節點>選擇登錄>在右邊的列表中單擊右鍵 >選擇新建登錄>在常規選項卡中單擊名稱旁邊的按鈕>選擇Administrators >單擊下面的成員按鈕>選擇Network Service>單擊添加按鈕>單擊確定返回新建登錄對話框>保證身份驗證類型為windows驗證允許訪問>單擊確定>關閉企業管理器

  第三步

  重新運行程序數據庫連接字符串選擇windows驗證即可

  > 在sqlserver中添加帳戶或IIS_WPG工作組

  此方法來自於

  未能加載視圖狀態正在向其中加載視圖狀態的控件樹必須與前一請求期間用於保存視圖狀態的控件樹相匹配例如當以動態方式添加控件時在回發期間添加的控件必須與在初始請求期間添加的控件的類型和位置相匹配

  原因viewstate的在作用是將控件的狀態保存在下次Post給服務器服務器進行恢復控件的狀態(控件的狀態包括值和事件

  解決方法

  ()每一個UserControl的viewstate都改為false

  ()加入這個

  thisPageEnableViewState = false;

  此方法來源於_astar/archive////l

  由於啟動用戶實例的進程時出錯導致無法生成 SQL Server 的用戶實例該連接將關閉

  問題原因

  這是微軟的bug並且微軟已經承認詳情如下

  出現此錯誤的條件是你用過遠程桌面連接並且安裝了SQL+VS就有很大可能觸發這個問題微軟說會在將來的XP SP裡面解決掉這個問題

  解決

   ID=&SiteID=

  如果你看不懂英文那麼我告訴你我的解決辦法

  刪除C:\Documents and Settings\[USERNAME]\Local Settings\Application Data\Microsoft\Microsoft SQL Server Data\SQLEXPRESS目錄即可[USERNAME]是Windows用戶名比如說Administrator

  此問題來於

  Server Application Unavailable

  The web application you are attempting to access on this web server is currently unavailable Please hit the Refresh button in your web browser to retry your request

  Administrator Note: An error message detailing the cause of this specific request failure can be found in the application event log of the web server Please review this log entry to discover what caused this error to occur

  解決

  如果你運行WinXP/IIS 為了給ASPNET工作進程訪問你的web工程文件夾的權力請到網站文件所在的目錄右鍵一級文件夾選Security-Add-鍵入ASPNET點擊OK或點擊Check Names如果彈出對話框提示Name not Found則應點擊Locations改變位置到本機計算機名點擊OK分配此用戶權限為Full Control點擊OK

  錯誤變為

  You are not authorized to view this page

  You do not have permission to view this directory or page using the credentials you supplied

  解決

  在IIS裡右鍵此虛擬目錄-Properties-Directory Security-Edit勾選上Integrated Windows authentication即可

  超時時間已到超時時間已到但是尚未從池中獲取連接出現這種情況可能是因為所有池連接均在使用並且達到了最大池大小

  可能原因如下並發操作Connection用後沒有關閉或者因為DataReader連接獨占連接

  解決方法

   修改幾個關鍵頁面或訪問比較頻繁的數據庫訪問操作使用DataAdapter和DataSet來獲取數據庫數據不要使用DataReader

   在訪問數據庫的頁面上使用數據緩存如果頁面的數據不是經常更新(幾分鐘更新一次)的話使用Cache對象可以不用訪問數據庫而使用緩存中的內容那麼可以大大減少連接數量

   修改代碼把使用Connection對象的地方都在Close()後面加上Dispose()調用

   建議對數據庫操作進行大的修改建立自己的數據庫操作代理類繼承SystemIDisposable接口強迫釋放資源這樣就不會出現連接數量不夠的問題了

  包加載失敗

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

  {AEECDEFAAEFF}請與包供應商聯系以獲得幫助由於可能會發生環境損壞建議重新啟動應用程序要禁止將來將來加載此包嗎?可以使用devenv reswetskippkgs重新啟用包加載

  每次開機打開vs都會有這個提示

  於是在google了一下發現很多方法都試過了只有一個解決一試就行

  解決方法如下:

  設置系統變量 VsLogActivity=

  在%APPDATA%\Microsoft\VisualStudio\\文件夾下創建文件ActivityLogxml

  從 WINNT\MicroSoftNET\Framework\vxxx 復制文件gdiplusdll 到 Program Files\Visual Studio \Common\Packages文件夾下

  在命令行下運行命令 devenv /resetskippkgs

  注:發現此問題只有在win會出現win就不會出現這個問題

  用戶xxx\ASPNET登錄失敗

  第一步

  把NT AUTHORITYNetWORK SERVICE 添加到Administrator組中

  我的電腦>右鍵>管理>本地用戶和組

  選擇>雙擊Administrators>單擊添加>單擊高級>單擊立即查找>在下面的列表中選Network Service用戶>兩次單擊確定>加入

  第二步 在企業管理器中加Network Service用戶

  打開Sql Server企業管理器>選擇數據庫實例>打開安全性節點>選擇登錄>在右邊的列表中單擊右鍵>選擇新建登錄>在常規選項卡中單擊名稱旁邊的按鈕>選擇Administrators>單擊下面的成員按鈕>選擇Network Service>單擊添加按鈕>單擊確定返回新建登錄對話框>保證身份驗證類型為windows驗證允許訪問>單擊確定>關閉企業管理器

  第三步

  重新運行aspNet程序數據庫連接字符串選擇windows驗證即可

  以上針對win如果是win 加ASpNet用戶

  無法在已存在的情況下創建/影像復制該文件

  解決方法重新編譯整個項目 或者重啟電腦

  Could not create an environment: OCIEnvCreate returned

  解決方案一

  主要是將oracle主目錄oracle\的讀寫權限賦予或者是IUSER_和IWAM_重啟計算機

  解決二:

  打開在IIS中的WEB屬性--主目錄--執行權限【改為-腳本和可執行文件】

  -應用程序池【改為-MSSharePointAppPool】刷新OK

  解決三:

  文件夾權限可以不用管

  設置ORACLE_HOME變量的方法如下

  控制面板>>系統>>高級>>環境變量>>系統變量>>新建系統變量

  變量名寫ORACLE_HOME

  變量值添實際的ORACLE_HOME路徑在注冊表中有

  由於目標機器積極拒絕無法連接

  在添加完引用後 用localhost替換掉所有的localhost:重新編譯

  能加載視圖狀態正在向其中加載視圖狀態的控件樹必須與前一請求期間用於保存視圖狀態的控件樹相匹配例如當以動態方式添加控件時在回發期間添加的控件必須與在初始請求期間添加的控件的類型和位置相匹配

  解決在頁面的 Page 項添加 EnableViewState=false 即可

  在以下方法或屬性之間的調用不明確methodmethod

  因隱式轉換的緣故編譯器無法調用重載方法的某種形式可以用以下方法糾正該錯誤

  以不發生隱式轉換的方式指定此方法的參數

  移除此方法的所有重載

  在調用方法之前強制轉換到正確的類型

  在應用程序級別以外使用注冊為 allowDefinition=MachineToApplication

  解決在網站對應的虛擬目錄上右鍵選屬性然後在應用程序名後點創建名字隨便填

  [子目錄不會繼承上級的屬性所以要將aspx文件所在的目錄屬性設置正確]

  無法識別的配置節connectionStrings

  原因

  用vs開發的應用程序需要使 framework 而在iis中的默環境是這時將發生不可識別的節點的問題

  解決辦法

  環境升級為開始-》運行-》cmd-》

  C:\WINDOWS\MicrosoftNET\Framework\v\aspnet_regiisexe i

  Timeout expired The timeout period elapsed prior to obtaining a connection from the pool This may have occurred because all pooled connections were in use and max pool size was reached

  Description: An unhandled exception occurred during the execution of the current web request Please review the stack trace for more information about the error and where it originated in the code

  Exception Details: SystemInvalidOperationException: Timeout expired The timeout period elapsed prior to obtaining a connection from the pool This may have occurred because all pooled connections were in use and max pool size was reached

  主要原因可能有

  使用了連接池大量的sqlconnection用了後忘記關閘門導致SQL占用嚴重可以用 exec sp_who 這個存儲過程查看一下

  連接池的連接數有所限制

  解決方法:

  釋放連接池調用Connection對象的Close()方法關閉數據庫連接

  利用try catch finally對數據庫連接進行異常處理當無法連接數據庫時將拋出異常並顯示出錯信息見catch代碼塊所示在此程序中無論是否發生異常都可以通過finally區塊關閉數據庫的連接從而節省計算機資源

  將SqlConnection對象包含到using區塊中這樣程序會自動調用Dispose()方法釋放SqlConnection對象所占用的系統資源無需再使用SqlConnection對象的Close()方法

  指定min pool size表示連接池允許的最小連接數(默認為下面的代碼指定了SqlConnection對象的max pool size為min pool size為

  SqlConnection mySqlConnection = new SqlConnection(server=localhost;database=Northwind;)


From:http://tw.wingwit.com/Article/program/net/201311/11175.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.