天天看點

考試系統--底層架構釋出時遇到的問題解決方案(Window7 IIS6.0)(一)      1、 HTTP 錯誤 500.21 - Internal Server Error處理程式“NickLeeCallbackHandler”在其子產品清單中有一個錯誤子產品“ManagedPipelineHandler”       2、打開在伺服器上IncludeExceptionDetailInFaults(從ServiceBehaviorAttribute或從<serviceDebug>配置行為)

考試系統--底層架構釋出時遇到的問題解決方案(Window7 IIS6.0)(一)      1、 HTTP 錯誤 500.21 - Internal Server Error處理程式“NickLeeCallbackHandler”在其子產品清單中有一個錯誤子產品“ManagedPipelineHandler”       2、打開在伺服器上IncludeExceptionDetailInFaults(從ServiceBehaviorAttribute或從<serviceDebug>配置行為)

     原因:在安裝framework v4.0之後,再啟用iis,導緻framework沒有完全安裝

     解決方案:開始->所有程式->附件->滑鼠右鍵點選“指令提示符”->以管理者身份運作->%windir%\microsoft.net\framework\v4.0.30319\aspnet_regiis.exe -i

考試系統--底層架構釋出時遇到的問題解決方案(Window7 IIS6.0)(一)      1、 HTTP 錯誤 500.21 - Internal Server Error處理程式“NickLeeCallbackHandler”在其子產品清單中有一個錯誤子產品“ManagedPipelineHandler”       2、打開在伺服器上IncludeExceptionDetailInFaults(從ServiceBehaviorAttribute或從<serviceDebug>配置行為)
考試系統--底層架構釋出時遇到的問題解決方案(Window7 IIS6.0)(一)      1、 HTTP 錯誤 500.21 - Internal Server Error處理程式“NickLeeCallbackHandler”在其子產品清單中有一個錯誤子產品“ManagedPipelineHandler”       2、打開在伺服器上IncludeExceptionDetailInFaults(從ServiceBehaviorAttribute或從<serviceDebug>配置行為)

       wcf的異常資訊預設是以faultexception的形式傳回到用戶端,faultexception的關鍵屬性reason是對用戶端回報的最重要資訊之一。以上用戶端代碼調用之後,預設的faultexception傳回的message資訊如下:

       由于内部錯誤,伺服器無法處理該請求。有關該錯誤的詳細資訊,請打開伺服器上的 includeexceptiondetailinfaults (從 servicebehaviorattribute 或從 <servicedebug> 配置行為)以便将異常資訊發送回用戶端,或在打開每個 microsoft .net framework 3.0 sdk 文檔的跟蹤的同時檢查伺服器跟蹤日志。

       根據異常的提示,意思說如果要在用戶端看到詳細的exception資訊,那麼請将servicebehavior對應的includeexceptiondetailinfaults屬性設定為true,通常在配置中表現為如下設定:    

      通過以上設定之後,用戶端輸出的内容為“嘗試除以零”,這個提示資訊跟原始的異常資訊是一緻,即傳回的faultexception中的reason包含原始異常的message的值,但是這樣處理之後服務端所報出的異常資訊直接傳到了用戶端,比如一些保密資訊也可能輸出到了用戶端,是以對于異常資訊必須進行一個封裝。最直接的形式莫過于在服務端就把異常給捕獲了,并重新throw一個faultexception

      服務端的代碼改進如下,經過以下改進,那麼用戶端得到的資訊僅僅是"操作失敗",同時服務端也記錄了異常資訊(這時includeexceptiondetailinfaults是設定為false的)。      

     後邊會陸續更新,記錄學習過程中遇到的問題,不斷提高。。。。。。