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 版支援 HttpSoap、HttpGet、HttpPost 和 Documentation 設定,而且依預設會於電腦層級啟用所有這些設定。
安全性建議
為 XML Web Service 啟用 HTTP-GET 或 HTTP-POST 通訊協定前,應該知道這種方法可能會將它公開至意料外的引動過程。例如,不懷戒心的使用者可能使用包含連結的電子郵件,而在按一下該連結時,卻使用電子郵件中提供的參數,以使用者的名義叫用 XML Web Service。啟用 HTTP-GET 或 HTTP-POST 通訊協定前,您應該考慮這類不小心的引動過程式是否會造成傷害。
若要停用整部電腦的 HTTP-GET 和 HTTP-POST 通訊協定
在慣用的文字編輯器中開啟 Machine.config 檔案 (安裝依預設會將 Machine.config 置於安裝根目錄的 \Config 子目錄)。
註解
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>儲存 Machine.config。
這個組態變更將會在下一次要求該電腦裝載的 XML Web Service 時生效。
若要停用個別 Web 應用程式的通訊協定支援
在慣用的文字編輯器中,開啟Web 應用程式根目錄中的 Web.config 檔案 (如果沒有 Web.config 檔案,請建立一個)。
修改 Web.config 的
webServices區段,明確移除通訊協定設定。下列範例明確移除 HTTP-POST 和 HTTP-GET 通訊協定:<webServices> <protocols> <remove name="HttpPost" /> <remove name="HttpGet" /> </protocols> </webServices>儲存 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 應用程式的服務說明網頁
在慣用的文字編輯器中,開啟Web 應用程式根目錄中的 Web.config 檔案 (如果沒有 Web.config 檔案,請建立一個)。
修改 Web.config 的
webServices區段,明確移除 Documentation 通訊協定。<webServices> <protocols> <remove name="Documentation" /> </protocols> </webServices>儲存 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