2014-11-24 61 views
2

我有一個帶有地址和參數僅公開一個WebInvoked操作這樣的自承載WCF服務:WCF自定義錯誤頁時,自託管的服務(沒有IIS)

www.myserver.com/myservice/SayHello?LuckeyNumber=3 (where LuckeyNumber : int) 

現在,當有人試圖要訪問此地址,但LuckeyNumber=EvilInput我得到一個WCF錯誤頁面,我想用頁面替換(類似於Twitter失敗鯨魚)。

  1. 如何取代此頁?
  2. 我可以替換404s,405s等的頁面嗎?

謝謝!

+0

可能與此SO問題有關: http://stackoverflow.com/questions/10600874/customize-wcf-rest-error-responses – Felix 2014-11-24 15:25:51

+0

爲什麼服務需要返回一個人類可讀的錯誤頁面?你不需要只是返回一個錯誤或500錯誤? – Remotec 2014-12-05 08:44:33

+0

@RemotecUk: 1.對於大多數情況,我們不。我們有一個端點返回HTML,我們希望有一個自定義的錯誤頁面。 2.我們的大多數服務都是JSON,並且故障被序列化爲SOAP-Faults。 3.現成的WCF返回一個我們想要控制的HTML人類可讀響應。 – Felix 2014-12-07 17:17:15

回答

0

對於自託管的WCF,如果您託管REST服務,則可以添加WebHttpBehavior以獲得HELP頁面,但是您肯定可以在服務響應中發送Fault Exception詳細信息(而不是整個html頁面)。

使用這些服務的應用程序應負責在錯誤頁面中顯示故障詳細信息。

您應該始終將該決定留給消費者(而不是服務層)來掩蓋這些數據並根據需要顯示/記錄。

+1

由於在滲透測試期間檢測到此消息,因此將消費者的決定留給消費者是不可取的,並且服務器有兩件事情是不能成立的:(1)服務器在故障異常中包含堆棧跟蹤,允許攻擊者反向設計一些我們服務器的結構,並(2)返回字符串'EvilInput'。如果字符串是''script lang ='javascript'> LaunchZeMissiles()'它會被執行(一個XSS)。 – Felix 2015-02-05 15:46:36