<serviceDebug>

指定 Windows Communication Foundation (WCF) 服務的偵錯和說明資訊功能。

<configuration>
  <system.serviceModel>
    <behaviors>
      <serviceBehaviors>
        <behavior>
          <serviceDebug>

Syntax

<serviceDebug httpHelpPageBinding="String"
              httpHelpPageBindingConfiguration="String"
              httpHelpPageEnabled="Boolean"
              httpHelpPageUrl="Uri"
              httpsHelpPageBinding="String"
              httpsHelpPageBindingConfiguration="String"
              httpsHelpPageEnabled="Boolean"
              httpsHelpPageUrl="Uri"
              includeExceptionDetailInFaults="Boolean" />

屬性和項目

下列章節說明屬性、子元素和父元素。

屬性

屬性 描述
httpHelpPageBinding 字串值,指定當利用 HTTP 存取服務說明頁面時所使用之繫結的型別。

只有當繫結的內部繫結項目支援 System.ServiceModel.Channels.IReplyChannel 時,這些繫結才會受到支援。 此外,該繫結的 System.ServiceModel.Channels.MessageVersion 屬性 (Property) 必須是 MessageVersion.None
httpHelpPageBindingConfiguration 字串,這個字串會指定在 httpHelpPageBinding 屬性中指定之繫結的名稱,該屬性會參考這個繫結中的其他組態資訊。 必須在 <bindings> 區段中定義相同的名稱。
httpHelpPageEnabled 布林值,其控制 WCF 是否在由 httpHelpPageUrl 屬性所指定的位址,發佈 HTML 說明網頁。 預設為 true

您可以將這個屬性設定為 false,以停用 HTML 瀏覽器可見的 HTML 說明頁的發行。

若要確保 HTML 說明網頁是在由 httpHelpPageUrl 屬性控制的位置發行,必須將這個屬性設定為 true。 此外,還必須符合下列其中一項條件:

- httpHelpPageUrl 屬性是支援 HTTP 通訊協定配置的絕對位址。
- 有支援 HTTP 通訊協定配置的服務之基底位址。

如果將不支援 HTTP 通訊協定配置的絕對位址指派至 httpHelpPageUrl 屬性,將會擲回例外狀況,但是其他任何不符合前述條件的情況都會造成沒有例外狀況和沒有 HTML 說明網頁。
httpHelpPageUrl URI,指定當使用 HTML 瀏覽器檢視端點時,使用者所看到的自訂 HTML 說明檔之相對或絕對 HTTP URL。

您可以使用這個屬性來啟用從 HTTP/Get 要求 (例如,從 HTML 瀏覽器) 傳回的自訂 HTML 說明檔。 HTML 說明檔的位置解析如下。

1. 如果這個屬性的值是相對位址,HTML 說明檔的位置就是支援 HTTP 要求的服務基底位址的值,再加上這個屬性值。
2. 如果這個屬性的值是絕對位址且支援 HTTP 要求,HTML 說明檔的位置就是這個屬性的值。
3. 如果這個屬性的值是絕對位址,但不支援 HTTP 要求,便會擲回例外狀況。

這個屬性只有在 httpHelpPageEnabled 屬性為 true 時才有效。
httpsHelpPageBinding 字串值,指定當利用 HTTPS 存取服務說明頁面時所使用之繫結的型別。

只有當繫結的內部繫結項目支援 IReplyChannel 時,這些繫結才會受到支援。 此外,該繫結的 System.ServiceModel.Channels.MessageVersion 屬性 (Property) 必須是 MessageVersion.None
httpsHelpPageBindingConfiguration 字串,這個字串會指定在 httpsHelpPageBinding 屬性中指定之繫結的名稱,該屬性會參考這個繫結中的其他組態資訊。 必須在 <bindings> 區段中定義相同的名稱。
httpsHelpPageEnabled 布林值,其控制 WCF 是否在由 httpsHelpPageUrl 屬性所指定的位址,發佈 HTML 說明頁面。 預設為 true

您可以將這個屬性設定為 false,以停用 HTML 瀏覽器可見的 HTML 說明頁的發行。

若要確保 HTML 說明網頁是在由 httpsHelpPageUrl 屬性控制的位置發行,必須將這個屬性設定為 true。 此外,還必須符合下列其中一項條件:

- httpsHelpPageUrl 屬性是支援 HTTPS 通訊協定配置的絕對位址。
- 有支援 HTTPS 通訊協定配置的服務之基底位址。

如果將不支援 HTTPS 通訊協定配置的絕對位址指派至 httpsHelpPageUrl 屬性,將會擲回例外狀況,但是其他任何不符合前述條件的情況都會造成沒有例外狀況和沒有 HTML 說明網頁。
httpsHelpPageUrl URI,指定當使用 HTML 瀏覽器檢視端點時,使用者所看到的自訂 HTML 說明檔的相對或絕對 HTTPS URL。

您可以使用這個屬性來啟用從 HTTPS/Get 要求 (例如,從 HTML 瀏覽器) 傳回的自訂 HTML 說明檔。 HTML 說明檔的位置解析如下:

- 如果這個屬性的值是相對位址,HTML 說明檔的位置就是支援 HTTPS 要求的服務基底位址的值,加上這個屬性值。
- 如果這個屬性的值是絕對位址且支援 HTTPS 要求,HTML 說明檔的位置就是這個屬性的值。
- 如果這個屬性的值是絕對位址,但不支援 HTTPS 要求,便會擲回例外狀況。

這個屬性只有在 httpHelpPageEnabled 屬性為 true 時才有效。
includeExceptionDetailInFaults 值,指定是否要針對偵錯用途,在傳回給用戶端的 SOAP 錯誤詳細資料中包含 Managed 例外狀況資訊。 預設值為 false

如果您將這個屬性設定為 true,就可以讓 Managed 例外狀況資訊的進入用戶端以便偵錯,以及發行可讓使用者在 Web 瀏覽器中瀏覽服務的 HTML 資訊檔案。 警告:將受控例外狀況資訊傳回用戶端,可能有安全性風險。 這是因為例外狀況細節會公開內部服務實作 (Implementation) 的相關資訊,可能會被未經授權的用戶端加以利用。

子元素

無。

父項目

元素 描述
<behavior> 指定行為項目。

備註

includeExceptionDetailInFaults 設定為 true,可讓服務能傳回應用程式的程式碼所擲回的所有例外狀況,即使例外狀況未使用 FaultContractAttribute 宣告也一樣。 當在伺服器擲回非預期例外狀況的案例中偵錯時,這個設定非常有用。 使用這個屬性會傳回未知例外狀況的序列化表單,而且您可以查看例外狀況的詳細資訊。

警告

將 Managed 例外狀況資訊傳回用戶端可能導致安全性風險,因為例外狀況詳細資料會公開未授權的用戶端可使用的內部服務實作相關資訊。 由於涉及安全性問題,因此強烈建議您只在受控制的偵錯狀況下這樣做。 部署應用程式時,includeExceptionDetailInFaults 應該要設為 false

如需與合約例外狀況相關安全性問題的詳細資訊,請參閱指定及處理合約和服務中的錯誤。 如需程式碼範例,請參閱服務偵錯行為

您也可以設定 httpsHelpPageEnabledhttpsHelpPageUrl 來啟用或停用說明網頁。 每個服務都可以選擇公開一份說明網頁,其中包含的服務相關資訊可以包括取得服務之 WSDL 的端點。 將 httpHelpPageEnabled 設定為 true,便可啟用這項功能。 如此就可讓說明網頁傳回至要求服務基底位址的 GET 要求。 您可以藉由設定 httpHelpPageUrl 屬性來變更這個位址。 此外,不使用 HTTP 而改用 HTTPS,就可以保護其安全。

選用的 httpHelpPageBindinghttpHelpPageBinding 屬性可讓您設定用來存取服務網頁的繫結。 如果未指定這些繫結,則會依適當情形,使用預設的繫結 (使用 HTTP 時為 HttpTransportBindingElement,使用 HTTPS 時則為 HttpsTransportBindingElement) 存取服務說明頁面。 請注意,這些屬性 (Attribute) 無法搭配內建的 WCF 繫結使用。 只有其內部繫結元素支援 xref:System.ServiceModel.Channels.IReplyChannel> 的繫結,才受到支援。 此外,該繫結的 System.ServiceModel.Channels.MessageVersion 屬性 (Property) 必須是 MessageVersion.None

另請參閱