共用方式為


使用 ASP.NET 建立之 XML Web Service 的組態選項

XML Web Service 的組態與所有的 ASP.NET Web 應用程式採用同樣架構。ASP.NET 組態是以 XML 為基礎的文字檔組態架構,功能強大可延伸。而組態檔只是一組 XML 項目,代表 Microsoft .NET Framework 特定技術功能的組態選項。XML Web Service 的組態選項封裝在組態檔的 webServices XML 項目內。如需 ASP.NET 組態架構的詳細資訊,請參閱 ASP.NET 組態。如需 XML Web Service 可用的組態選項之完整清單,請參閱 <webServices> 項目

設定訊息通訊協定和服務說明網頁

XML Web Service 的訊息通訊協定和服務說明頁,是在組態檔的 <webServices> 項目之下的 <protocols> XML 項目中加以設定的。只要為每個設定加入 <add><remove> 項目,指定設定是否可以在組態檔範圍中使用,即可完成組態設定。<add> 項目會明確地為組態檔的範圍加入該設定的支援,而 <remove> 項目卻會移除組態階層架構中更上層的已加入支援。例如,您可以在 Machine.config 檔案中,使用 <add> 項目將通訊協定設定加入電腦層級,然後再於 Web.config 檔案中使用 <remove> 項目,針對 Web 應用程式移除這項設定。下列是 <add><remove> 項目的語法:

<{add|remove} name="protocol name" />

<add><remove> 項目的名稱屬性具有下列選項:

設定 說明
HttpSoap 控制對 XML Web Service 經由 HTTP 通訊協定的 SOAP 支援。安裝會依預設加入支援。
HttpGet 控制對 XML Web Service 的 HTTP-GET 通訊協定的支援。安裝依預設不會加入支援。
HttpPost 控制對 XML Web Service 的 HTTP-POST 通訊協定的支援,與要求起源無關。安裝依預設不會加入支援。
HttpPostLocalhost 控制對 XML Web Service 的 HTTP-POST 通訊協定的支援 (要求來自於本機電腦時)。如果將 HttpPost 加入目前的組態,則這個設定無效。安裝會依預設加入支援。
Documentation 指定使用者巡覽至 XML Web Service 的 URL,且瀏覽器中沒有任何參數時,是否要顯示服務說明網頁。安裝會依預設加入支援。

**注意   .**NET Framework 1.0 版支援 HttpSoapHttpGetHttpPostDocumentation 設定,而且依預設會於電腦層級啟用所有這些設定。

安全性建議

為 XML Web Service 啟用 HTTP-GET 或 HTTP-POST 通訊協定前,應該知道這種方法可能會將它公開至意料外的引動過程。例如,不懷戒心的使用者可能使用包含連結的電子郵件,而在按一下該連結時,卻使用電子郵件中提供的參數,以使用者的名義叫用 XML Web Service。啟用 HTTP-GET 或 HTTP-POST 通訊協定前,您應該考慮這類不小心的引動過程式是否會造成傷害。

若要停用整部電腦的 HTTP-GET 和 HTTP-POST 通訊協定

  1. 在慣用的文字編輯器中開啟 Machine.config 檔案 (安裝依預設會將 Machine.config 置於安裝根目錄的 \Config 子目錄)。

  2. 註解 webServices 區段中的程式碼行,這個區段會加入 HTTP-GET 和 HTTP-POST (如果存在) 的支援。完成上述步驟後,webServices 區段應該看起來如下:

    <webServices>
        <protocols>
          <add name="HttpSoap"/> 
             <!-- <add name="HttpPost"/> -->          <!-- <add name="HttpGet"/>  -->
          <add name="Documentation"/>
          <add name="HttpPostLocalhost"/>
        </protocols>
    </webServices>
    
  3. 儲存 Machine.config。

    這個組態變更將會在下一次要求該電腦裝載的 XML Web Service 時生效。

若要停用個別 Web 應用程式的通訊協定支援

  1. 在慣用的文字編輯器中,開啟Web 應用程式根目錄中的 Web.config 檔案 (如果沒有 Web.config 檔案,請建立一個)。

  2. 修改 Web.config 的 webServices 區段,明確移除通訊協定設定。下列範例明確移除 HTTP-POST 和 HTTP-GET 通訊協定:

    <webServices>
         <protocols>
           <remove name="HttpPost" />
           <remove name="HttpGet" />
         </protocols>
    </webServices>
    
  3. 儲存 Web.config。

    這個組態變更將會在下一次要求 Web 應用程式裝載的 XML Web Service 時生效。

服務說明網頁

用戶端不需要 Web 瀏覽器的任何參數,即可瀏覽 XML Web Service 的 URL,檢視 XML Web Service 的服務說明網頁 (如果服務設定可這樣做)。根據預設,服務說明網頁包含人們可讀取的 (Human-Readable) 資訊,說明如何與 XML Web Service 和 XML Web Service 公開的方法進行通訊。因為服務說明網頁只是 ASP.NET Web Form,所以可以置換或修改來包含公司商標等項目。服務說明頁的檔案名稱是在組態檔的 <wsdlHelpGenerator> XML 項目中指定 (在 Machine.config 檔中有指定 DefaultWsdlHelpGenerator.aspx 的預設設定)。XML Web Service 的伺服器說明頁只有在具 Documentation 通訊協定 (於 <protocols> XML 項目中指定) 之組態檔範圍中才會顯示。根據預設,Documentation 通訊協定指定在 machine.config 檔案中。

若要停用個別 Web 應用程式的服務說明網頁

  1. 在慣用的文字編輯器中,開啟Web 應用程式根目錄中的 Web.config 檔案 (如果沒有 Web.config 檔案,請建立一個)。

  2. 修改 Web.config 的 webServices 區段,明確移除 Documentation 通訊協定。

    <webServices>
         <protocols>
           <remove name="Documentation" />
         </protocols>
    </webServices>
    
  3. 儲存 Web.config。

    這個組態變更將會在下一次要求 Web 應用程式裝載的 XML Web Service 時生效。

    **注意   **如果移除 Documentation 通訊協定,也會停用 Web 應用程式內任何 XML Web Service 產生 WSDL 檔案的功能。這個會防止用戶端產生 Proxy 類別,除非建立自訂 WSDL 檔案並提供給用戶端。若要保留 Web 應用程式內 XML Web Service 產生 WSDL 檔案的功能,但不提供任何人們可讀取的 XML Web Service 相關資訊,您可以將 <wsdlHelpGenerator> 項目加入 Web 應用程式的 Web.config 檔案,然後將 href 屬性設定為已經建立的空白 HTML 網頁。下列程式碼範例摘錄自 Web.config 檔案,將服務說明網頁設定為 docs 資料夾中的 MyBlank.htm 檔案 (位於包含 Web.config 檔案的資料夾下)。

    <webServices>
       <wsdlHelpGenerator href="docs/MyBlank.htm"/>
    </webServices>
    

請參閱

部署 XML Web Service | 啟用 XML Web Service 的探索 | 使用 ASP.NET 建置 XML Web Service