• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • ASP.NET創建Web服務之發布和部署

    發表于:2007-05-25來源:作者:點擊數: 標簽:web部署ASP.NET發布創建
    部署一個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永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>