部署XML Web服務
部署一個XML Web服務包括把
例如
\Inetpub
\Wwwroot
\StockServices
StockServices
\Bin
你的XML Web服務使用的匯編不是Microsoft
XML Web服務發布的條目
當你發布一個XML Web服務時
條目 描述 Web應用程序目錄 作為你的XML Web服務的根目錄
發現一個XML Web服務
XML Web服務發現是定位和詢問XML Web服務描述的過程
可以在XML Web服務發布一個
為了使能發現一個XML Web服務
使用你喜歡的編輯器創建一個XML文檔
在這個XML文檔內添加一個<discovery>元素
<disco:discovery xmlns:disco=
</disco:discovery>
在<discovery>元素內
你可以添加對任意你想公開的引用
<?xml version=
<discovery xmlns=
<discoveryRef ref=
<contractRef ref=
docRef=
xmlns=
<schemaRef ref=
xmlns=
</discovery>
引用可以與發現文檔存在於的目錄有關
通過復制發現文檔到Web服務器的一個虛擬目錄下
選擇性地
如果用於Web應用程序的默認頁面是一個HTML頁面:
在用於Web服務器的默認Web的頁面的<head>標記中添加一個鏈接到發現文檔。tw.WIngWit.cOm例如,如果你命名你的發現文檔MyWebService.disco並把它放入與默認頁面相同的目錄中,你需要放置下面的標記到默認的Web頁面中。
<HEAD>
<link type='text/xml' rel='alternate' />
</HEAD>
如果用於Web應用程序的默認頁面是一個XML文檔:
在用於Web服務器的默認Web的頁面的<head>標記中添加一個鏈接到發現文檔。例如,如果你命名你的發現文檔MyWebService.disco並把它放入與默認頁面相同的目錄中,你需要放置下面的代碼到默認的Web頁面的頂端。
<?xml-stylesheet type="text/xml" alternate="yes" ?>
選擇性地,如果你使用Visual Studio.NET,你可以開啟動態的發現來允許XML Web服務客戶端應用程序來在一個沒有創建發現文檔的Web服務器上發現可用的XML Web服務。當動態發現開啟的時候,客戶應用程序在Add Web Reference對話框中指定一個引用帶有.vsdisco部分的文件的URL,例如/default.vsdisco,來代替特定的發現文檔。
為了開啟用於一個Web服務器的動態發現,要修改nfig來添加下面的<add>元素。
<configuration>
<system.web>
<httpHandlers>
<add verb="*" path="*.vsdisco"
type="System.Web.Services.Discovery.DiscoveryRequestHandler,
System.Web.Services, Version=1.0.3300.0,
Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
validate="false"/>
</httpHandlers>
</system.web>
</configuration>
注意:當動態發現開啟的時候,所有的XML Web服務和存在於Web服務器的發現文檔都是可發現的。因此,當開啟動態發現時必須小心,因為如果Web服務器不在帶有隔火牆的安全網絡中的話,它可能會在無意中暴露敏感數據。
用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>元素移除對更高的配置等級的支持。例如,可以使用nfig文件中的<add>元素在機器級別添加一個協議設置,然後使用nfig文件中的<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協議對於整機失效
使用你習慣的文本編輯程序打開nfig文件。(nfig文件默認的地點在安裝目錄的\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>
保存nfig。
在下一次請求這台機器上的XML Web服務的時候,配置的改變將生效。
使用於單獨Web應用程序的協議支持失效
使用你習慣的編輯程序打開Web應用程序根目錄下的nfig。(如果無存在nfig文件,那麼就新建一個。)
修改nfig的webServices部分,明確的移除協議設置。下面的示例明確地移除HTTP- POST和HTTP- GET協議:
<webServices>
<protocols>
<remove name="HttpPost" />
<remove name="HttpGet" />
</protocols>
</webServices>
保存nfig。
在下一次請求這個Web應用程序的XML Web服務的時候,配置的改變將生效。
服務幫助頁面
在一個Web浏覽器中不使用任何參數導航到XML Web服務的URL能讓客戶查看這個XML Web服務的服務幫助頁面,如果這個服務進行了這樣的配置。服務幫助頁面默認情況下包含關於與XML Web服務通訊的方法以及XML Web服務方法的基本信息。因為服務幫助頁面僅僅是一個ASP.NET Web表單,它可以被替換或者被修改成包含類似於公司標識這樣的條目。服務幫助頁面的文件名在配置文件的<wsdlHelpGenerator>XML元素中指定。服務幫助頁面只用來顯示有在<protocols> XML元素指定的Documentation協議的配置文件范圍內的XML Web服務。默認情況下,Documentation在nfig文件中指定。
使服務幫助頁面對於一個單獨的Web應用程序失效。
使用你習慣的編輯程序打開Web應用程序根目錄下的nfig。(如果無存在nfig文件,那麼就新建一個。)
修改nfig的webServices部分,明確的移除Documentation協議。
<webServices>
<protocols>
<remove name="Documentation" />
</protocols>
</webServices>
保存nfig。
在下一次請求這個Web應用程序的XML Web服務的時候,配置的改變將生效。
注意取消Documentation協議還禁止任何Web應用程序內用於XML Web服務的WSDL文件生成。這防止客戶端產生代理類,除非創建一個自定義WSDL文件來為為它們設置。為了在Web應用程序中保留用於XML Web服務的WSDL文件生成,而不提供任何關於XML Web服務的可讀的信息,那麼你可以添加一個<wsdlHelpGenerator>元素到Web應用程序的nfig文件中,設置href屬性為你創建的一個空白的HTML頁面。下面的代碼示例是一個nfig文件的摘錄,設置服務幫助頁面為文件。
<webServices>
<wsdlHelpGenerator HREF="docs/MyBlank.asp"/>
</webServices>
From:http://tw.wingwit.com/Article/program/net/201311/13643.html