天天看點

MOSS中如何自定義WebService

MOSS中已經提供的webservice都放在虛拟目錄_vti_bin中,對應的實體目錄為c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\ISAPI。可能你會覺得這個目錄_vti_bin名有點怪,這個名字來自該公司Vermeer Technologies Incorporated。這個公司唯一的産品就是FrontPage,該公司在1996年被微軟收購。

下面我們就自己實作一個webservice,需要以下幾步:

一:建立Webservice項目

1.使用vs2005建立一個webserivce項目來實作我們的webservice,然後我在填加一個類庫用于實作webservice的邏輯部分。項目結構如下圖:

<a href="http://www.cnblogs.com/images/cnblogs_com/carysun/WindowsLiveWriter/MOSSWebService_12553/01.jpg"></a>

為MOSSLibrary2類庫簽名,項目“右鍵---屬性---簽名---為程式集簽名",不使用密碼。Service.cs是現實Webservice邏輯的地方,代碼如下:

二:将MOSSLibrary2類庫添加到GAC中

有兩種方法:

<code>1. </code>将bin目錄下的MOSSLibrary2.dll拖到<code>%windows%\assembly</code><code>檔案夾下即可。</code>2. 打開VS2005的指令行工具,用GACUI.exe工具,指令如下:

<code>gacutil.exe -iF "&lt;Full file system path to DLL&gt;"</code>.

三:<code>修改service.asmx檔案</code>

<code>其中的相關資訊可以到%windows%\assembly檔案夾下找到MOSSLibrary2.dll,右鍵檢視其屬性獲得,該修改主要</code>指定service.asmx的邏輯檔案使用的是MOSSLibrary2項目中的service.cs中的代碼。

四:生成靜态發現檔案service.disco和Webservice的描述檔案service.wsdl

1.将service.asmx拷貝到c:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\12\template\layouts目錄下,然後打開VS2005的指令行工具,使用如下指令:

<code>disco http://carysun/_layouts/Service.asmx</code>

完成後會生成service.disco和service.wsdl檔案

實際上就是把原來的純xml變換成為一個page來解析。并且這個頁面的解析是通過moss處理的。 

3.将service.disco中的

替換為:

&lt;soap:address location=&lt;% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl

                                                          (Request)),Response.Output); %&gt; /&gt;

和&lt;soap12:address location=&lt;%SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl

5.将service.disco和service.wsdl改名為servicedisco.aspx和servicewsdl.aspx

五:部署webservice

如下圖:

<a href="http://www.cnblogs.com/images/cnblogs_com/carysun/WindowsLiveWriter/MOSSWebService_12553/02.jpg"></a>

六:用戶端調用

我們建立一個window應用程式,添加該webservice的應用,然後在按鈕的單擊事件添加如下代碼:

se.UseDefaultCredentials = true;這句代碼是設定信任的,否則會報沒有權限的錯誤。

最後效果為:

<a href="http://www.cnblogs.com/images/cnblogs_com/carysun/WindowsLiveWriter/MOSSWebService_12553/03.jpg"></a>

本文轉自生魚片部落格園部落格,原文連結:http://www.cnblogs.com/carysun/archive/2008/05/13/webservice.html,如需轉載請自行聯系原作者