明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

ASP.NET創(chuàng)建XML Web服務(wù)全接觸(15)

[摘要]用ASP.NET創(chuàng)建的XML Web服務(wù)的配置選擇  XML Web服務(wù)的配置遵循和所有的ASP.NET Web應(yīng)用程序使用的相同的范式。ASP.NET配置是一個(gè)基于XML的文本文件配置結(jié)構(gòu),既強(qiáng)大又可擴(kuò)展。配置文件只是一組XML元素,描述用于Microsoft.NET Framework的特定技...

    

  用ASP.NET創(chuàng)建的XML Web服務(wù)的配置選擇

  XML Web服務(wù)的配置遵循和所有的ASP.NET Web應(yīng)用程序使用的相同的范式。ASP.NET配置是一個(gè)基于XML的文本文件配置結(jié)構(gòu),既強(qiáng)大又可擴(kuò)展。配置文件只是一組XML元素,描述用于Microsoft.NET Framework的特定技術(shù)特性的配置選擇。就 XML Web服務(wù)而言,配置選擇是封裝在配置文件的webServices XML元素中的。

  配置消息傳送協(xié)議和服務(wù)幫助頁面

  用于XML Web服務(wù)消息傳送協(xié)議和服務(wù)幫助頁面在配置文件的<webServices>元素下的<protocols> XML元素中配置。通過添加<add>和<remove>元素來進(jìn)行配置,制定配置文件范圍內(nèi)的那個(gè)設(shè)置有效。<add>元素明確地添加對(duì)配置文件范圍內(nèi)的設(shè)置的支持,而<remove>元素移除對(duì)更高的配置等級(jí)的支持。例如,可以使用Machine.config文件中的<add>元素在機(jī)器級(jí)別添加一個(gè)協(xié)議設(shè)置,然后使用Web.config文件中的<remove>元素移除對(duì)某個(gè)Web應(yīng)用程序的設(shè)置。下面的是<add>和<remove>元素的語法:

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


  <add>和<remove>元素的name屬性有下列選項(xiàng):

設(shè)置

描述

HttpSoap

支持用于XML Web服務(wù)的SOAP協(xié)議的控件。默認(rèn)情況下安裝已經(jīng)添加了這個(gè)支持。

HttpGet

支持用于XML Web服務(wù)的HTTP - GET協(xié)議的控件。默認(rèn)情況下安裝不添加這個(gè)支持。

HttpPost

支持用于XML Web服務(wù)的HTTP - POST協(xié)議的控件,不管請(qǐng)求從何起源。默認(rèn)情況下安裝不添加這個(gè)支持。

HttpPostLocalhost

當(dāng)請(qǐng)求來源于本地計(jì)算機(jī)的時(shí)候,支持用于XML Web服務(wù)的HTTP - POST協(xié)議的控件。如果HttpPost添加到當(dāng)前配置中,那么這個(gè)設(shè)置就無效了。默認(rèn)情況下安裝已經(jīng)添加了這個(gè)支持。

Documentation

指定一個(gè)服務(wù)幫助頁面是否顯示。默認(rèn)情況下安裝已經(jīng)添加了這個(gè)支持。


  注意:.NET Framework 1.0版支持HttpSoap、HttpGet、HttpPost和Documentation設(shè)置和所有默認(rèn)的機(jī)器級(jí)別能夠使用的設(shè)置。

  安全建議

  在使用用于XML Web服務(wù)的HTTP-GET或HTTP-POST協(xié)議之前,你應(yīng)該知道這樣做可能把它暴露給無意的調(diào)用。例如,一個(gè)未料想到的用戶可能接收一個(gè)帶有XML Web服務(wù)鏈接的電子郵件,點(diǎn)擊鏈接,使用電子郵件中提供的參數(shù)調(diào)用XML Web服務(wù)。你應(yīng)該在使用HTTP-GET或HTTP-POST協(xié)議之前,你應(yīng)該考慮這種無意中的調(diào)用是否有害。

  使HTTP-GET和HTTP-POST協(xié)議對(duì)于整機(jī)失效

  使用你習(xí)慣的文本編輯程序打開Machine.config文件。(Machine.config文件默認(rèn)的地點(diǎn)在安裝目錄的\Config子目錄下。)

  如果webServices部分中有對(duì)HTTP-GET和HTTP-POST的支持,那么就把這幾行注釋掉。在這樣做以后,webServices部分應(yīng)該如下:

<webServices>
<protocols>
<add name="HttpSoap"/>
<!-- <add name="HttpPost"/> -->
<!-- <add name="HttpGet"/> -->
<add name="Documentation"/>
<add name="HttpPostLocalhost"/>
</protocols>
</webServices>


  保存Machine.config。

  在下一次請(qǐng)求這臺(tái)機(jī)器上的XML Web服務(wù)的時(shí)候,配置的改變將生效。

  使用于單獨(dú)Web應(yīng)用程序的協(xié)議支持失效

  使用你習(xí)慣的編輯程序打開Web應(yīng)用程序根目錄下的Web.config。(如果無存在Web.config文件,那么就新建一個(gè)。)

  修改Web.config的webServices部分,明確的移除協(xié)議設(shè)置。下面的示例明確地移除HTTP- POST和HTTP- GET協(xié)議:

<webServices>
<protocols>
<remove name="HttpPost" />
<remove name="HttpGet" />
</protocols>
</webServices>


  保存Web.config。

  在下一次請(qǐng)求這個(gè)Web應(yīng)用程序的XML Web服務(wù)的時(shí)候,配置的改變將生效。

  服務(wù)幫助頁面

  在一個(gè)Web瀏覽器中不使用任何參數(shù)導(dǎo)航到XML Web服務(wù)的URL能讓客戶查看這個(gè)XML Web服務(wù)的服務(wù)幫助頁面,如果這個(gè)服務(wù)進(jìn)行了這樣的配置。服務(wù)幫助頁面默認(rèn)情況下包含關(guān)于與XML Web服務(wù)通訊的方法以及XML Web服務(wù)方法的基本信息。因?yàn)榉⻊?wù)幫助頁面僅僅是一個(gè)ASP.NET Web表單,它可以被替換或者被修改成包含類似于公司標(biāo)識(shí)這樣的條目。服務(wù)幫助頁面的文件名在配置文件的<wsdlHelpGenerator>XML元素中指定。服務(wù)幫助頁面只用來顯示有在<protocols> XML元素指定的Documentation協(xié)議的配置文件范圍內(nèi)的XML Web服務(wù)。默認(rèn)情況下,Documentation在Machine.config文件中指定。

  使服務(wù)幫助頁面對(duì)于一個(gè)單獨(dú)的Web應(yīng)用程序失效。

  使用你習(xí)慣的編輯程序打開Web應(yīng)用程序根目錄下的Web.config。(如果無存在Web.config文件,那么就新建一個(gè)。)

  修改Web.config的webServices部分,明確的移除Documentation協(xié)議。

<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>


  保存Web.config。

  在下一次請(qǐng)求這個(gè)Web應(yīng)用程序的XML Web服務(wù)的時(shí)候,配置的改變將生效。

  注意取消Documentation協(xié)議還禁止任何Web應(yīng)用程序內(nèi)用于XML Web服務(wù)的WSDL文件生成。這防止客戶端產(chǎn)生代理類,除非創(chuàng)建一個(gè)自定義WSDL文件來為為它們?cè)O(shè)置。為了在Web應(yīng)用程序中保留用于XML Web服務(wù)的WSDL文件生成,而不提供任何關(guān)于XML Web服務(wù)的可讀的信息,那么你可以添加一個(gè)<wsdlHelpGenerator>元素到Web應(yīng)用程序的Web.config文件中,設(shè)置href屬性為你創(chuàng)建的一個(gè)空白的HTML頁面。下面的代碼示例是一個(gè)Web.config文件的摘錄,設(shè)置服務(wù)幫助頁面為MyBlank.htm文件。

<webServices>
<wsdlHelpGenerator HREF="docs/MyBlank.asp"/>
</webServices>