SharePoint Web Service系列:編寫自訂SharePoint Web Services之一

來源:互聯網
上載者:User
原文地址:http://msdn.microsoft.com/library/default.asp?url=/library/en-us/odc_sp2003_ta/html/odc_writingcustomwebservicesforsppt.asp
 

摘要: 學習建立自訂SharePoint Web services ,並建立基於SharePoint 的文檔上傳Web servicefor用來實現外部應用程式遠端存取文件庫中的文檔。

代碼下載: ODC_WritingCustomWebServicesSampleSPPT.EXE.

我們可以基於WSS構建強大的項目。做為開發人員,我們有時需要建立基於WSS的自訂 Web服務來滿足特定的開發要求。

注意:由於WSS增強的安全性,我們需要一些特殊的步驟來建立自訂Web服務。當我們使用VS.NET提供的ASP.NET Web service模板來建立我們的SharePoint Web service時,我們必須將Web service建立到單獨的IIS網站中,而不能和WSS處於同一個IIS網站(不能使用相同的連接埠)。同時,我們還必須是運行WSS的機器上本機系統管理員群組的成員。

下面列出了開發自訂SharePoint Web 服務的簡要步驟:

1、如果我們的WSS位於預設網站(連接埠80),那麼我們需要建立一個新的網站並配置不同的連接埠。新的網站作為開發用網站,而WSS所在的預設網站作為生產環境的部署網站。

2、在開發網站上建立一個Web Service項目

3、產生並修改靜態發現(.disco)檔案和 .wsdl檔案,並儲存成 .aspx頁面。在頁面內容頂部註冊Microsoft.SharePoint命名空間。

4、修改.disco和.wsdl檔案,使其支援服務虛擬化機制。

5、當我們開發完成Web service後,將相關的檔案部署到WSS網站的_vti_bin和_vti_bin\bin虛擬目錄下。

執行個體ODC_WritingCustomWebServicesSampleSPPT.EXE 提供了一個遠端存取文檔的Web服務樣本。項目中實現了一些Microsoft.SharePoint命名空間中暴露出來的文檔存取方法,如SPFile.CheckIn, SPFile.CheckOut, SPFile.UndoCheckOut, 和 SPFileCollection.Add。在沒有這些自訂的Web service時,我們必須使用WebDAV或FrontPage RPC來實作類別似的文檔訪問。

在WSS的伺服器上安裝該樣本

  1. 下載ODC_WritingCustomWebServicesSampleSPPT.EXE並解壓到WSS前端伺服器的本地路徑。Local_drive:\CreatingaCustomWebServiceSample
  2. 雙擊build.bat檔案來執行編譯和安裝。

如下檔案被拷貝到Local_drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\isapi\ 目錄:

    • SPFiles.asmx
    • spfilesdisco.aspx
    • spfileswsdl.aspx

    如下檔案被拷貝到Local_drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\isapi\BIN\目錄:

      • WSCheckOut.dll
      • WSCheckOut.pdb

      編寫一個自訂Web服務

      1、 在開發用網站上使用VS.NET利用其提供的模板建立一個空的 ASP.Net Web Service項目,其中將包括一個Service1.asmx 檔案。

      2、 進入代碼編輯,移除下面的行的注釋後編譯該項目。

      //[WebMethod]
      //public string HelloWorld()
      //{
      //  return "Hello World";
      //}

      3、 現在,我們可以將我們的服務部署到WSS網站中。

       要想將自訂的Web服務綁到WSS上,VS .NET需要一些特定的基於.disco和.wsdl檔案的.aspx檔案。首先使用VS .NET命令列工具產生我們需要的.disco和.wsdl檔案。

      建立並編輯.disco和.wsdl檔案

      使用VS .NET命令列工具在目前的目錄中產生Service1.disco 和 Service1.wsdl,命令如下:

      Disco http://server_name:New_Port/Project_Name/Service_1.asmx

      開啟Service1.disco檔案並定位到下面的行:

      <?xml version="1.0" encoding="utf-8"?>

      將其替換成:

      <%@ Page Language="C#" Inherits="System.Web.UI.Page"%> <%@ Assembly Name="Microsoft.SharePoint, Microsoft.SharePoint, Version=11.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %> <%@ Import Namespace="Microsoft.SharePoint.Utilities" %> <%@ Import Namespace="Microsoft.SharePoint" %>
      <% Response.ContentType = "text/xml"; %>

      以 Service1disco.aspx儲存該檔案。

      對Service1.wsdl也進行同樣的修改並儲存為Service1wsdl.aspx。

      修改 Service1disco.aspx和Service1wsdl.aspx使其支援服務虛擬化機制

      開啟Service1disco.aspx檔案並定位到下面的行:

      <contractRef  ref="http://server_name:New_Port/Project_Name/Service1.asmx?wsdl" docRef=
      "http://server_name:New_Port/Project_Name/Service1.asmx" xmlns="http://schemas.xmlsoap.org/disco/scl/" />

      對標籤<contractRef>進行如下修改:

      <contractRef ref=<% SPEncode.WriteHtmlEncodeWithQuote(Response, SPWeb.OriginalBaseUrl(Request)
       + "?wsdl", '"'); %> docRef=<% SPEncode.WriteHtmlEncodeWithQuote(Response,
       SPWeb.OriginalBaseUrl(Request), '"'); %>  xmlns="http://schemas.xmlsoap.org/disco/scl/" />

      定位到下面的行:

      <soap address="http://server_name:New_Port/Project_Name/Service1.asmx" xmlns:q1="http://tempuri.org/" binding="q1:Service1Soap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />

      修改<soap address> 標籤為:

      <soap address=<% SPEncode.WriteHtmlEncodeWithQuote(Response, SPWeb.OriginalBaseUrl(Request), '"'); %> xmlns:q1="http://tempuri.org/" binding="q1:Service1Soap" xmlns="http://schemas.xmlsoap.org/disco/soap/" />

      儲存所有更改。

      開啟Service1wsdl.aspx檔案並定位到下面的行:

      <soap:address location="http://server_name:New_Port/Project_Name/Service1.asmx" />

      修改soap:address行為:

      <soap:address location=<% SPEncode.WriteHtmlEncodeWithQuote(Response,
       SPWeb.OriginalBaseUrl(Request), '"'); %> />

      儲存所有更改。

      將Web service相關檔案拷貝到_vti_bin虛擬目錄

      拷貝Service1wsdl.aspx,Service1disco.aspx和Service1.asmx到_vti_bin虛擬目錄。該目錄是預設的Web服務存放目錄。

      拷貝對應的.dll檔案到_vti_bin/bin虛擬目錄。

      注意:_vti_bin/bin虛擬目錄映射到實體路徑\\Server_Name\Program Files\Common Files\Microsoft Shared\Web Server Extensions\ISAPI\bin

      聯繫我們

      該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

      如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

      A Free Trial That Lets You Build Big!

      Start building with 50+ products and up to 12 months usage for Elastic Compute Service

      • Sales Support

        1 on 1 presale consultation

      • After-Sales Support

        24/7 Technical Support 6 Free Tickets per Quarter Faster Response

      • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.