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 "<Full file system path to DLL>"</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中的
替換為:
<soap:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl
(Request)),Response.Output); %> />
和<soap12:address location=<%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,如需轉載請自行聯系原作者