Create Cutom Web Service

 

本文的内容是讲解如何创建一个在WSS上下文中使用的Web Service

创建的步骤:

vs2005中创建一个Asp.net Web Service应用程序.

Web service程序创建一个类库,用于定义Web Service的逻辑处理功能

使用工具生成并编辑静态的.disco.wsdl文件

Web Service部署到_vti_bin目录

创建一个Windows应用程序测试创建的WebService是否可用

一:创建Asp.net Web Service应用程序和类库

         注意,我这里创建的WebService工程中默认有一个Service.asmx,我就先用这个进行演示了,就不创建新的了,其中有一个方法HelloWorld

         打开vs2005,点击File,选择Asp.net Web Service,Location选择File System,语言选择C#
            
         创建一个类库,用于进行Web Service的逻辑处理。选择Web Service工程的解决方案,点击File,选择Class Library,输入合适的名字,如ServiceLib。选择ServiceLib,右健,选择AddReference,选择System.Web.Service,点击OK

         WebService工程中App_Code文件夹下的Service.cs拖到ServiceLib工程中,然后删除WebService工程中的Service.cs

         ServiceLib签名,右健ServiceLib,选择Properties,Signing栏中选择Sign the assemble,在下拉框中选择新建一个密钥文件,如key.snk.

         生成ServiceLib工程。

         ServiceLib.dll注册到GAC中去:

1.         选择“开始-程序-Visual Studio 2005-Visual Studio Tools”,选择Visual Studio 2005 Command Prompt

2.         输入命令:gacutil –i   dll文件的路径;

     最后一步,修改WebService工程中的Service.asmx文件,打开该文件,将该文件由
   <%@ WebService Language="C#" CodeBehind="~/App_Code/WebService.cs" Class="WebService" %>
         修改为:

<%@ WebService Language="C#" Class="Service,ServiceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=698a7d0279197ba0" %>

其中:Service,ServiceLib, Version=1.0.0.0, Culture=neutral, PublicKeyToken=698a7d0279197ba0

Service为ServiceLib工程中WebService中的类的名称,后面的内容可以借助Reflector获取。

二.生成.disco和.wsdl文件

    因为WSS3.0将它的Urls虚拟化了,你不能使用Asp.net自动产生的.disco和.wsdl文件,因此我们需要手工创建并修改。

    将webService文件拷贝到""Program Files"Common Files"Microsoft Shared"web server extensions"12"TEMPLATE"LAYOUTS目录下。

1. 选择“开始-程序-Visual Studio 2005-Visual Studio Tools”,选择Visual Studio 2005 Command Prompt;输入以下命令山生.disco和.wsdl文件,

2. disco http://MyServer/_layouts/Service.asmx

3. 产生的文件在"Program Files"Microsoft Visual Studio 8"SDK"v2.0"Bin目录下;

开始修改 .disco文件和.wsdl文件:

1.   将两个文件中的<?xml version="1.0" encoding="utf-8"?>统一修改为:

<%@ Page Language="C#" Inherits="System.Web.UI.Page" %>

<%@ Assembly Name="Microsoft.SharePoint, Version=12.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

<%@ Import Namespace="Microsoft.SharePoint.Utilities" %> 
<%@ Import Namespace="Microsoft.SharePoint" %>
<% Response.ContentType = "text/xml"; %>
2.   在.disco文件里,按照以下格式进行修改:

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

 <soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns:q1="http://tempuri.org/" binding="q1:HelloWorld" xmlns="http://schemas.xmlsoap.org/disco/soap/" />

 <soap address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> xmlns:q2="http://tempuri.org/" binding="q2:ServiceSoap12" xmlns="http://schemas.xmlsoap.org/disco/soap/" />
3.   在.wsdl文件里,采用查找替换的方法,将其中的location节点修改为如下的格式:
<soap:address location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> />
4.   将.disco和.wsdl文件分别命名为:Servicedisco.aspx和Servicewsdl.aspx;
三.部署WebService
  _vti_bin文件夹映射到Local_Drive:"Program Files"Common Files"Microsoft Shared"Web Server Extensions"12"ISAPI目录,这个目录里面存放的是WSS使用的WebService文件。将Servicedisco.aspx和Servicewsdl.aspx,以及Service.asmx文件拷贝到ISAPI目录下。
  为了让自定义的WebService文件能够和WSS自带的WebService文件一样能够正常地工作,需要修改"Program Files"Common Files"Microsoft Shared"Web Server Extensions"12"ISAPI路径下的spdisco.aspx文件,在其中增加以下代码:

<contractRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/Service.asmx?wsdl"), Response.Output); %> docRef=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/Service.asmx"), Response.Output); %> xmlns=" http://schemas.xmlsoap.org/disco/scl/ " />

 <discoveryRef ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(spWeb.Url + "/_vti_bin/Service.asmx?disco"),Response.Output); %> xmlns="http://schemas.xmlsoap.org/disco/" />

四.测试WebService文件

         好了,现在WebService文件已经做好了,现在我们新建一个Windows Application来测试我们自定义的WebService文件。添加Web Reference,在工程中进行测试,代码如下:

gswuxy.Service service = new TestWSSService.gswuxy.Service();

            MessageBox.Show(service.HelloWorld());

好了,最终的结果如下:

OK,完成了。

五.后记

         这个时候我们就可以继续改造我们的WebService使之完成更加复杂的功能,同时在修改的过程中,我们需要将dll文件重新注册到GAC中去,完成后,重新启动IIS,是新的dll生效;生成新版本的.discowsdl文件,并将他们拷贝到相应的目录下。

    非常遗憾的是,文章中的图都没了!有兴趣的可以下载完整的版本,噢噢!

转载于:https://www.cnblogs.com/administrators/archive/2007/10/27/939636.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值