ASP.NET創建Web服務之發布和部署
部署一個XML Web服務包括復制.asmx文件和任何XML Web服務使用的匯編文件,而不要把Microsoft.NET Framework的一部分作為Web 服務器 上的虛擬目錄。有關如何部署一個XML Web服務的信息,請參見"部署XML Web服務"。XML Web服務對使用發現機制的用戶適用。用戶
部署一個XML
Web服務包括復制.asmx文件和任何XML
Web服務使用的匯編文件,而不要把Microsoft
.NET Framework的一部分作為Web
服務器上的虛擬目錄。有關如何部署一個XML Web服務的信息,請參見"部署XML Web服務"。XML Web服務對使用發現機制的用戶適用。用戶可以瀏覽一個特殊的發現文件或Web
服務器的根來定位發現文件。從這些文件中,他們可以判斷那些服務對他們來說有用。
部署XML Web服務 部署一個XML Web服務包括把.asmx文件和任何XML Web服務使用的匯編文件,而不是Microsoft.NET Framework的一部分,復制到Web服務器上。
例如,假設你把一個XML Web服務命名為StockServices。為了部署XML Web服務,你需要在你的Web服務器上創建一個虛擬目錄和把XML Web服務的.asmx文件放入這個目錄。這個虛擬目錄還應該是一個IIS Web應用程序,雖然它不是必需的。一個典型的部署將有下面的目錄結構:
\Inetpub \Wwwroot \StockServices StockServices.asmx \Bin |
你的XML Web服務使用的匯編不是Microsoft.NET Framework一部分的。
XML Web服務發布的條目 當你發布一個XML Web服務時,下列條目用來部署一個Web服務器。
條目 |
描述 |
Web應用程序目錄 |
作為你的XML Web服務的根目錄。所有的文件都存放在這個目錄中。這個目錄應該被標記為一個IIS Web應用程序所用。 |
<MyXMLWebService>.asmx 文件 |
調用XML Web服務的客戶端的基本URL。這個文件可以為任何有效的文件名。 |
<MyXMLWebService>.disco文件 |
(可選的)作為XML Web服務的發現機制。.disco文件不會自動地為XML Web服務創建。這個文件可以為任何有效的文件名。 |
Web.config文件 |
(可選擇的)如果你需要覆蓋默認配置設置,你可以包含一個web.config文件。XML Web服務使用這個配置文件來允許系統的定制和可擴展性。例如,如果在系統中你的XML Web服務需要驗證而其他的Web應用程序不需要的話,你可以提供一個該XML Web服務特定的web.config文件。 |
\Bin目錄 |
包含用于這個XML Web服務的二進制文件。如果你的XML Web服務類和.asmx文件不在同一個目錄下,那么包含類的部件必須在\Bin目錄中。 |
發現一個XML Web服務 XML Web服務發現是定位和詢問XML Web服務描述的過程,這是訪問一個XML Web服務的預備步驟。通過發現過程,XML Web服務客戶端可以在設計時得知一個XML Web服務存在,它能做什么以及如何適當的與之交互。
可以在XML Web服務發布一個.disco文件時
編程發現,.disco是一個包含與其它發現文檔、XSD模式和服務描述連接的XML文檔。換句話說,使用ASP.NET創建的XML Web服務自動地有提供一個產生發現文檔的能力。當使用帶有?DISCO的URL訪問時,一個發現文檔自動地為XML Web服務生成。例如,如果到一個XML Web服務的URL是www.contoso.com/getquote.asmx,然后自動以www.contoso.com/getquote.asmx?DISCO生成一個發現文檔。
為了使能發現一個XML Web服務:
使用你喜歡的編輯器創建一個XML文檔,把標記<?xml version="1.0"?>添加到第一行。
在這個XML文檔內添加一個<discovery>元素,如:
<disco:discovery xmlns:disco="http://schemas.xmlsoap.org/disco/"> </disco:discovery> |
在<discovery>元素內,添加到服務描述、XSD模式和其他發現文檔的引用。
你可以添加對任意你想公開的引用。服務描述引用在一個發現文檔中通過使用http://schemas.xmlsoap.org/disco/scl/ XML域名空間添加一個<contractRef>元素來指定。同樣地,對其它的發現文檔和XSD模式的引用分別通過添加<discoveryRef>和<schemaRef> XML元素來指定。對于XSD模式引用,必須指定XML域名空間http://schemas.xmlsoap.org/disco/schema。。下面的代碼示例有對于發現文檔、服務描述和一個XSD模式的引用。
<?xml version="1.0"?> <discovery xmlns="http://schemas.xmlsoap.org/disco/"> <discoveryRef ref="/Folder/Default.disco"/> <contractRef ref="http://MyWebServer/UserName.asmx?WSDL" docRef="Service.htm" xmlns="http://schemas.xmlsoap.org/disco/scl/"/> <schemaRef ref="Schema.xsd" xmlns="http://schemas.xmlsoap.org/disco/schema/"/> </discovery> |
引用可以與發現文檔存在于的目錄有關,就如在discoveryRef元素所示,或與一個URI有關,就如在contractRef元素所示。
通過復制發現文檔到Web服務器的一個虛擬目錄下,把發現文檔部署到這臺Web服務器上。
選擇性地,如果你想要通過指定一個IIS應用程序而不需要指定一個文檔來允許預期消耗者導航到一個URL,那么你可以添加一個到IIS應用程序的默認的頁面。這對預期消耗者有益,他們不必知道任意發現文檔的名稱。用戶可以提供想下面發現過程中的URL:
http://MyWebServer/MyWebApplication
如果用于Web應用程序的默認頁面是一個HTML頁面:
在用于Web服務器的默認Web的頁面的<head>標記中添加一個鏈接到發現文檔。例如,如果你命名你的發現文檔MyWebService.disco并把它放入與默認頁面相同的目錄中,你需要放置下面的標記到默認的Web頁面中。
<HEAD> <link type='text/xml' rel='alternate' href='MyWebService.disco'/> </HEAD> |
如果用于Web應用程序的默認頁面是一個XML文檔:
在用于Web服務器的默認Web的頁面的<head>標記中添加一個鏈接到發現文檔。例如,如果你命名你的發現文檔MyWebService.disco并把它放入與默認頁面相同的目錄中,你需要放置下面的代碼到默認的Web頁面的頂端。
<?xml-stylesheet type="text/xml" alternate="yes" href="MyWebService.disco" ?> |
選擇性地,如果你使用Visual Studio.NET,你可以開啟動態的發現來允許XML Web服務客戶端應用程序來在一個沒有創建發現文檔的Web服務器上發現可用的XML Web服務。當動態發現開啟的時候,客戶應用程序在Add Web Reference對話框中指定一個引用帶有.vsdisco部分的文件的URL,例如www.contoso.com/default.vsdisco,來代替特定的發現文檔。
為了開啟用于一個Web服務器的動態發現,要修改machine.config來添加下面的<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>元素移除對更高的配置等級的支持。例如,可以使用Machine.config文件中的<add>元素在機器級別添加一個協議設置,然后使用Web.config文件中的<remove>元素移除對某個Web應用程序的設置。下面的是<add>和<remove>元素的語法:
<{add|remove} name="protocol name" /> |
?。糰dd>和<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> |
原文轉自:http://www.kjueaiud.com
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月
|