ASP.NET創建XML Web服務全接觸(15)
發表時間:2024-02-08 來源:明輝站整理相關軟件相關文章人氣:
[摘要]用ASP.NET創建的XML Web服務的配置選擇 XML Web服務的配置遵循和所有的ASP.NET Web應用程序使用的相同的范式。ASP.NET配置是一個基于XML的文本文件配置結構,既強大又可擴展。配置文件只是一組XML元素,描述用于Microsoft.NET Framework的特定技...
用ASP.NET創建的XML Web服務的配置選擇
XML Web服務的配置遵循和所有的ASP.NET Web應用程序使用的相同的范式。ASP.NET配置是一個基于XML的文本文件配置結構,既強大又可擴展。配置文件只是一組XML元素,描述用于Microsoft.NET Framework的特定技術特性的配置選擇。就 XML Web服務而言,配置選擇是封裝在配置文件的webServices XML元素中的。
配置消息傳送協議和服務幫助頁面
用于XML Web服務消息傳送協議和服務幫助頁面在配置文件的<webServices>元素下的<protocols> XML元素中配置。通過添加<add>和<remove>元素來進行配置,制定配置文件范圍內的那個設置有效。<add>元素明確地添加對配置文件范圍內的設置的支持,而<remove>元素移除對更高的配置等級的支持。例如,可以使用Machine.config文件中的<add>元素在機器級別添加一個協議設置,然后使用Web.config文件中的<remove>元素移除對某個Web應用程序的設置。下面的是<add>和<remove>元素的語法:
<{add remove} name="protocol name" /> |
<add>和<remove>元素的name屬性有下列選項:
設置 | 描述 |
HttpSoap | 支持用于XML Web服務的SOAP協議的控件。默認情況下安裝已經添加了這個支持。 |
HttpGet | 支持用于XML Web服務的HTTP - GET協議的控件。默認情況下安裝不添加這個支持。 |
HttpPost | 支持用于XML Web服務的HTTP - POST協議的控件,不管請求從何起源。默認情況下安裝不添加這個支持。 |
HttpPostLocalhost | 當請求來源于本地計算機的時候,支持用于XML Web服務的HTTP - POST協議的控件。如果HttpPost添加到當前配置中,那么這個設置就無效了。默認情況下安裝已經添加了這個支持。 |
Documentation | 指定一個服務幫助頁面是否顯示。默認情況下安裝已經添加了這個支持。 |
注意:.NET Framework 1.0版支持HttpSoap、HttpGet、HttpPost和Documentation設置和所有默認的機器級別能夠使用的設置。
安全建議
在使用用于XML Web服務的HTTP-GET或HTTP-POST協議之前,你應該知道這樣做可能把它暴露給無意的調用。例如,一個未料想到的用戶可能接收一個帶有XML Web服務鏈接的電子郵件,點擊鏈接,使用電子郵件中提供的參數調用XML Web服務。你應該在使用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服務的時候,配置的改變將生效。
使用于單獨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服務的時候,配置的改變將生效。
服務幫助頁面
在一個Web瀏覽器中不使用任何參數導航到XML Web服務的URL能讓客戶查看這個XML Web服務的服務幫助頁面,如果這個服務進行了這樣的配置。服務幫助頁面默認情況下包含關于與XML Web服務通訊的方法以及XML Web服務方法的基本信息。因為服務幫助頁面僅僅是一個ASP.NET Web表單,它可以被替換或者被修改成包含類似于公司標識這樣的條目。服務幫助頁面的文件名在配置文件的<wsdlHelpGenerator>XML元素中指定。服務幫助頁面只用來顯示有在<protocols> XML元素指定的Documentation協議的配置文件范圍內的XML Web服務。默認情況下,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服務的時候,配置的改變將生效。
注意取消Documentation協議還禁止任何Web應用程序內用于XML Web服務的WSDL文件生成。這防止客戶端產生代理類,除非創建一個自定義WSDL文件來為為它們設置。為了在Web應用程序中保留用于XML Web服務的WSDL文件生成,而不提供任何關于XML Web服務的可讀的信息,那么你可以添加一個<wsdlHelpGenerator>元素到Web應用程序的Web.config文件中,設置href屬性為你創建的一個空白的HTML頁面。下面的代碼示例是一個Web.config文件的摘錄,設置服務幫助頁面為MyBlank.htm文件。
<webServices> <wsdlHelpGenerator HREF="docs/MyBlank.asp"/> </webServices> |