MOSS创建自定义WebService服务
来源:互联网 发布:空姐外围女 知乎 编辑:程序博客网 时间:2024/05/29 14:03
关于MOSS中使用自定义WebService这种问题,google一搜会有很多很多!为什么我还要写呢? 我认为有些事情必须自己亲自做一次看到效果了,心里才踏实! 其次也当做自己的学习笔记吧! 做的当中也遇到了好多问题,都解决了,在这里共享大家...
MOSS自带Web service
MOSS自己提供的web服务在:C:\Program Files\Common Files\microsoft shared\Web Server Extensions\14\ISAPI 目录下面
几个常用的Web 服务:
- 列表服务 :http://localhost:80/_vti_bin/Lists.asmx ==>可以完成列表的增删改查操作,访问列表视图和列表附件
- 搜索服务:http://localhost:80/_vti_bin/Lists.asmx ==>提供Query方法,构造XML查询返回结果
- UserGroup服务:http://localhost:80/_vti_bin/Lists.asmx ==>用户和用户组的增删改查,数据读取,权限设定
- Imageing服务:http://localhost:80/_vti_bin/Lists.asmx ==>管理站的中的图片库,文档库
当然里面还有很多其他webservice了,自己去挖掘!利用这些web服务,客服端程序来操作MOSS站的而不用登录网页维护!
创建自定义Web Service步骤
- 新建一个 ASP.NET Web Service 项目
- 编写业务逻辑方法
- 生成disco和wsdl文件 如何生成这两个文件呢?下面有详细步骤)
- 修改disco和wsdl文件
- 把修改后的disco和wsdl文件和asmx文件复制到 C:\Program Files\Common Files\microsoft shared\Web Server Extensions\14\ISAPI 下,并把程序集放在站的下面的bin目录里面
- 运行
using System;using System.Collections.Generic;using System.Linq;using System.Web;using System.Data;using System.Web.Services;using Microsoft.SharePoint;using Microsoft.SharePoint.WebControls;namespace TasksWebService{ /// <summary> /// TaskService 的摘要说明 /// </summary> [WebService(Namespace = "http://localhost")] [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)] [System.ComponentModel.ToolboxItem(false)] // 若要允许使用 ASP.NET AJAX 从脚本中调用此 Web 服务,请取消对下行的注释。 // [System.Web.Script.Services.ScriptService] public class TaskService : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } /// <summary> /// 获取列表的总数 /// </summary> /// <param name="listName"></param> [WebMethod(Description="获取列表的总数")] public string getTaskData(string listName,string rootUrl) { SPWeb myWeb = SPContext.Current.Web; SPListCollection lists = myWeb.Lists; return (myWeb.Title + " contains " + lists.Count.ToString() + " Web sites."); } }
}
1,为程序签名:
右键项目-->属性-->签名-->选中为程序集签名-->选择强名称密钥文件下拉框,<新建...>
然后 清除“使用密码保护密钥文件”复选框,再单击“确定”。
2,GAC assembly
重新生成项目
将生成的dll文件拖拽到C:\WINDOWS\assembly里
右键点assembly刚拖进去的文件,点属性,一会要用到的有版本号和公钥标记
3,修改asmx文件
用记事本格式打开WebService项目asmx文件,去掉CodeBehind属性,修改 Class 属性的内容,替换成强命名引用,以便该指令与以下格式相匹配,替换后的内容为:
<%@ WebService Language="C#" Class="TasksWebService.TaskService,TasksWebService, Version=1.0.0.0, Culture=neutral, PublicKeyToken=22898ec57778cb91" %>
主意:Class="命名空间.类名(NameSpace.ClassName), 程序集名称(AssemblyName), Version=1.0.0.0, Culture=neutral, PublicKeyToken=公钥标记"
修改保存后,把asmx文件拷贝到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\TEMPLATE\LAYOUTS下,在IE地址栏键入:http://localhost/_layouts/(你的asmx文件名).asmx 测试是否能通过,若无报错继续下一步
注释详解:若要提供自定义 Web 服务的相关发现和说明,必须创建 .disco 文件和 .wsdl 文件。由于 Windows SharePoint Services 可虚拟化其 URL,因此不能使用由 ASP.NET 自动生成的 .disco 和 .wsdl 文件,而必须创建可提供所需的重定向并维护虚拟化的 .disco 页和 .wsdl ASPX 页。
可以使用 ASP.NET 通过在虚拟目录(如 /_layouts
)中临时承载 Web 服务来生成 .disco 和 .wsdl 文件,然后可以使用 .NET Framework Web 服务发现工具 (Disco.exe) 获取生成的文件。
4、生成静态发现文件和 WSDL 文件
使用VS2010命令提示 输入:discohttp://localhost/_layouts/TaskService.asmx 然后回车
生成的disco文件和wsdl文件的路径:C:\Program Files\Microsoft Visual Studio 10.0\VC
5,若要注册 Windows SharePoint Services 对象模型的命名空间,请打开 .disco 和 .wsdl 文件,并将开放式 XML 处理指令<?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"; %>
6、打开.disco 文件,再次修改 .disco 文件,将文本路径替换为代码生成的路径
找到<contractRef>标签下的 ref属性 和 docRef属性,将其ref 和 docRef值替换为:
ref=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request) + "?wsdl"),Response.Output); %> docRef=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %>
再找到<soap>标签下的 address属性(通常有两个soap标签,都要替换),将其 address值替换为:
address=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %>
修改后,保存关闭文件
7、打开 .wsdl 文件,再次修改 .wsdl 文件,对指定的 SOAP 地址进行以下类似的替换:
打开文件后移动到最下面找到<wsdl:service name="TaskService">标签,在该标签节点下找到 <soap:address> 的标签(通常有两个:soap:address和soap12:address)的 location属性,将其 location值替换为:
location=<% SPHttpUtility.AddQuote(SPHttpUtility.HtmlEncode(SPWeb.OriginalBaseUrl(Request)),Response.Output); %> />
修改后,保存关闭文件
8、将.disco 和.wsdl 文件重命名格式分别为 TaskServicedisco.aspx 和 TaskServicewsdl.aspx 的两个文件,以便可以通过 Windows SharePoint Services 检测到您的服务。
9、将新的TaskServicedisco.aspx 和 TaskServicewsdl.aspx文件以及 /_layouts下修改TaskService.asmx 的三个文件剪切到C:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI 下
10、若要验证您的自定义 Web 服务是否可以被检测到,WIN+R,iisreset,重启IIS,
在IE栏键入:http://localhost/_vti_bin/TaskService.asmx
注释:_vti_bin 虚拟目录能够以物理方式映射到本地驱动器:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\14\ISAPI 目录,后者包含用于 Windows SharePoint Services 的默认 Web 服务文件.
另一个项目:
添加web引用: 地址为:http://localhost/_vti_bin/TaskService.asmx
TaskService.Service mcs = new TaskService.Service();mcs.UseDefaultCredentials = true; //注意设置这个属性为trueResponse.Write(mcs.getTaskData());
- MOSS创建自定义WebService服务
- MOSS中如何自定义WebService
- webservice 服务创建
- WebService服务创建
- Webservice服务创建、调用
- eclipse创建webservice服务
- CXF创建WebService服务
- 【WebService】自定义WebService服务及其调用
- Jax-Ws创建WebService服务
- 使用axis创建WebService服务
- eclipse下创建webService服务
- KBMMW-创建自定义服务
- 创建Linux自定义服务
- moss webservice调用(Moss自带的webservice)
- moss自定义登陆页面
- moss自定义登陆页面
- Moss自定义菜单Feature
- 自定义MOSS导航菜单
- TCP协议---服务器与客户端状态转换图
- android2.3设备有多个Camera设置
- stl中vector的容量变换问题
- 第二章 4 HTML 5 Web 存储
- vc摄像头笔记
- MOSS创建自定义WebService服务
- xen块设备体系结构 - tapdisk2 (1)
- 第二章 5 HTML5 Input 类型
- @property详解
- Multi tasking in Windows Phone 7.1
- 转换
- intent 的 startActivity 的跳转 来启动 onNewIntent
- iframe的跨域注意事项,待更新
- 如果你看不见你还能编程吗?