Web開(kāi)發(fā)異常行為排查常用方法圖文介紹
平常程序遇到錯(cuò)誤,開(kāi)發(fā)環(huán)境下一般都用調(diào)試搞定,生產(chǎn)環(huán)境下通過(guò)查看日志搞定。但也有搞不定的時(shí)候,這是我在Silverlight開(kāi)發(fā)時(shí)遇到的的錯(cuò)誤:
如果啟用調(diào)試,"對(duì)不起,程序已經(jīng)崩潰,無(wú)法附加到進(jìn)程"。怎么辦?提示信息太少,盲目懷疑程序哪里寫(xiě)的不對(duì),只會(huì)使問(wèn)題變得更糟,拖延了解決問(wèn)題的時(shí)間。
異常排查此時(shí)我們應(yīng)該查看是哪一個(gè)請(qǐng)求引起的錯(cuò)誤,方法就是使用瀏覽器的開(kāi)發(fā)者工具:IE8以上按f12,chrome按下ctrl+shift+I,轉(zhuǎn)到“網(wǎng)路”,開(kāi)始捕捉:
這里我們得到的是一個(gè)500錯(cuò)誤,知道了是請(qǐng)求.svc時(shí)出錯(cuò)了。雙擊查看響應(yīng)正文或者直接復(fù)制請(qǐng)求url到瀏覽器訪(fǎng)問(wèn)可以得到更詳細(xì)的出錯(cuò)信息:
我們看到調(diào)用堆棧還沒(méi)有開(kāi)始調(diào)用我們的代碼,和我們自己的代碼沒(méi)有關(guān)系。此時(shí)去google(程序猿果斷放棄baidu吧),沒(méi)有找到任何解決問(wèn)題的方法。我們只能根據(jù)自己程序的實(shí)際情況,判斷是DomainService出的問(wèn)題。因?yàn)槠綍r(shí)按部就班寫(xiě)的程序根本不出現(xiàn)這種錯(cuò)誤,但這次是引用的類(lèi)庫(kù)中的DomainService,所以一定是漏掉了什么dll導(dǎo)致的。最偷懶的解決方法:手動(dòng)添加一個(gè)“域服務(wù)類(lèi)”到工程,VS自動(dòng)添加所需dll,并配置好了web.config。再次運(yùn)行,問(wèn)題解決了。
結(jié)論最怕遇到這種錯(cuò)誤提示很少的的錯(cuò)誤,因?yàn)槟涿睿瑹o(wú)從查起,讓人抓狂。有時(shí)一個(gè)錯(cuò)誤一下午就浪費(fèi)過(guò)去了,還不一定解決。方法還是具體問(wèn)題具體分析,根據(jù)程序的實(shí)際情況,結(jié)合自己的成功經(jīng)驗(yàn),多google,一定能解決的。當(dāng)然如果自己解決了又google不到的最好發(fā)到cnblogs,作為前車(chē)之鑒服務(wù)大家,這也是寫(xiě)技術(shù)博的猿最愿意做的事吧。
相關(guān)文章
DataGrid 動(dòng)態(tài)添加模板列 實(shí)現(xiàn)代碼
模版控件能讓用戶(hù)幾乎不用花費(fèi)任何時(shí)間就創(chuàng)建出復(fù)雜的用戶(hù)界面. Asp.net有很多控件都使用了模版技術(shù)(DataGrid就是一個(gè)例子). 而這些控件都工作得很好, 通常, 模版可以被保存為ascx文件以增加復(fù)用性. 很有可能, 事前你是不知道你的控件是怎么布局的, 而且你需要?jiǎng)討B(tài)的添加一些模版以應(yīng)付不同的事件.2009-04-04asp.ent下合并兩個(gè)結(jié)構(gòu)相同的DataTable
今天遇到了一個(gè)情況,就是從一張數(shù)據(jù)表中讀取幾個(gè)符合條件1的客戶(hù)的信息,然后再讀取幾個(gè)符合條件2的客戶(hù)的信息,最后顯示出來(lái).因?yàn)榍昂髢纱螖?shù)據(jù)的客戶(hù)信息的結(jié)構(gòu)是完全相同的,所以干脆合并成一個(gè)DataTable再賦值給GridView好了.2010-02-02.Net6集成IdentityServer4?+AspNetCore?Identity讀取數(shù)據(jù)表用戶(hù)且鑒權(quán)授權(quán)管理A
這篇文章主要介紹了.Net6集成IdentityServer4與AspNetCore?Identity讀取數(shù)據(jù)表用戶(hù)且鑒權(quán)授權(quán)管理API,IdentityServer4?實(shí)現(xiàn)鑒權(quán)、授權(quán),AspNetCore?Identity實(shí)現(xiàn)數(shù)據(jù)庫(kù)用戶(hù)管理表直接生成,下文詳情需要朋友可以參考一下2022-07-07ASP.NET?Core配置設(shè)置之Configuration包
這篇文章介紹了ASP.NET?Core配置設(shè)置之Configuration包,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-07-07如何在ASP.NET Core中給上傳圖片功能添加水印實(shí)例代碼
這篇文章主要給大家介紹了關(guān)于如何在ASP.NET Core中給上傳圖片功能添加水印的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-02-02使用HttpClient增刪改查ASP.NET Web API服務(wù)
這篇文章介紹了使用HttpClient增刪改查ASP.NET Web API服務(wù)的方法,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-10-10ASP.NET SignaiR 實(shí)現(xiàn)消息的即時(shí)推送,并使用Push.js實(shí)現(xiàn)通知的示例代碼
ASP.NET SignalR 是為 ASP.NET 開(kāi)發(fā)人員提供的一個(gè)庫(kù),可以簡(jiǎn)化開(kāi)發(fā)人員將實(shí)時(shí) Web 功能添加到應(yīng)用程序的過(guò)程。有興趣的可以了解一下。2017-01-01