国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > .NET > 正文

ASP.NET創建Web服務之發布和部署

2024-07-10 13:05:59
字體:
來源:轉載
供稿:網友

部署一個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>

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 菏泽市| 三穗县| 门头沟区| 枞阳县| 赤城县| 乐平市| 维西| 临夏县| 太谷县| 社会| 贺州市| 依安县| 韶关市| 荔波县| 建平县| 马山县| 孝义市| 清丰县| 治多县| 前郭尔| 临城县| 阳泉市| 长兴县| 丹寨县| 呈贡县| 建湖县| 昂仁县| 长治市| 盘锦市| 且末县| 中阳县| 香格里拉县| 淅川县| 荆州市| 沙坪坝区| 集贤县| 华安县| 鱼台县| 安阳市| 浦城县| 深州市|