当前位置: 首页 > news >正文

SharePoint Web Service系列:编写自定义SharePoint Web Services之二

下面,我们要将我们的Web服务添加到WSS的Web服务列表中,这样就可以在VS.NET中添加该Web服务的引用了。

1、打开spdisco.aspx文件,该文件位于Local_Drive:\Program Files\Common Files\Microsoft Shared\Web Server Extensions\60\ISAPI目录。

2、在文件末尾的discovery元素中添加下面的内容,保存。
注意:soap元素的binding属性中在 "Soap"之前的文字(该例中的binding="q1:Service1Soap")指定了定义Web service时使用的类名。

< contractRef ref =<% SPEncode.WriteHtmlEncodeWithQuote(Response,spWeb.Url+"/_vti_bin/Service1.asmx?wsdl",'"');% > docRef= < %SPEncode .WriteHtmlEncodeWithQuote(Response,spWeb.Url+"/_vti_bin/Service1.asmx",'"');% > xmlns="http://schemas.xmlsoap.org/disco/scl/"/>
< soap address =<% SPEncode.WriteHtmlEncodeWithQuote(Response,spWeb.Url+"/_vti_bin/Service1.asmx",'"');% >
xmlns:q1="http://schemas.microsoft.com/sharepoint/soap/directory/"binding="q1:Service1Soap"xmlns="http://schemas.xmlsoap.org/disco/soap/"/>

至此,我们的自定义Web service就部署完成了。我们可以像使用默认的Web service一样来调用我们的自定义Web service了。

创建文档上载Web服务

我们可以使用上面的方法来建立文档上载Web服务来上载文档到一个WSS的共享文档文档库。该服务利用服务虚拟化来获取站点上下文,然后上载文档到指定的文档库。

创建一个Web service项目,名为UploadSvc。添加一个新的Web service类命名为UploadFile。

添加对Windows SharePoint Services (Microsoft.Sharepoint.dll)的引用。

在UploadFile类中添加下面的Web方法:

编译该Web service项目。

[WebMethod]
public string UploadDocument( string fileName, byte []fileContents, string pathFolder)
{
if (fileContents == null )
{
return " NullAttachment " ;
}
try
{
SPWebsite
= SPControl.GetContextWeb(Context);
SPFolderfolder
= site.GetFolder(pathFolder);
string fileUrl = fileName;
SPFilefile
= folder.Files.Add(fileUrl,fileContents);
return file.TimeCreated.ToLongDateString() + " :: " + file.Title;
}
catch (System.Exceptionee)
{
return ee.Message + " :: " + ee.Source;
}
}

添加下面的命名空间引用:

using System.IO;
using Microsoft.SharePoint;
using Microsoft.SharePoint.WebControls;

创建并修改.disco和.wsdl并修改spdisco.aspx, 需要将上面的Service1 替换成UploadFile。分别保存为UploadFiledisco.aspx和UploadFilewsdl.aspx。

拷贝这些文件到_vti_bin, 拷贝对应得.dll到 _vti_bin/bin。

调用上载文件服务的例子

新建一个WinForm应用程序,添加Web引用,并将该引用命名为WSSServer。

添加一个button和两个textbox到默认的窗体,一个textbox用来输入上载文件的路径,另一个用来指定要上载到哪个文档库。如http://Server_Name/sites/Target_Site/Document_Library

添加下面的代码到button的Click事件中。

WSSServer.UploadFilesvcDocLib = new WSSServer.UploadFile();
svcDocLib.Credentials
= CredentialCache.DefaultCredentials;

string strPath = textBox1.Text;
string strFile = strPath.Substring(strPath.LastIndexOf( " \\ " ) + 1 );
string strDestination = textBox2.Text;

FileStreamfStream
= new FileStream(strPath,System.IO.FileMode.Open);
byte []binFile = new byte [( int )fStream.Length];
fStream.Read(binFile,
0 ,( int )fStream.Length);
fStream.Close();

string str = svcDocLib.UploadDocument(strFile,binFile,strDestination);
MessageBox.Show(str);

添加命名空间引用:

using System.Net;
using System.IO;

编译运行。
(结束)

相关文章:

  • python2clock_Python3 time clock()方法
  • SharePoint Web Service系列: Add或Update其他各种类型的项
  • mysql 视图_mysql中常见的视图操作,你理解了吗?
  • Windows文件操作的直接函数调用
  • python同名包_python去除rpm仓库中同名低版本的包
  • MOSS2007基础:Windows SharePoint Services 3.0中的Web Part
  • 输入代码自动生成流程图_输入示例,自动生成代码:TensorFlow官方工具TF-Coder已开源...
  • MOSS 2007基础:WSS 3.0 中的母版页(Master Pages)和内容页(Content Pages)
  • recyclerview嵌套recyclerview_阿里3轮面试都问了RecyclerView
  • 更改某用户个人网站的配额设置
  • python语音录音_同时从麦克风录制音频并用python播放
  • 隐藏自定义列表中的某些栏
  • python生成多级文件夹_利用 python 遍历多级文件夹处理不同文件
  • python去除视频中的logo_视频去水印神器(Easy Video Logo Remover)
  • MOSS 2007基础:内容类型(Content Type)
  • JS中 map, filter, some, every, forEach, for in, for of 用法总结
  • $translatePartialLoader加载失败及解决方式
  • ECMAScript6(0):ES6简明参考手册
  • JavaScript HTML DOM
  • JavaScript 基础知识 - 入门篇(一)
  • SpringCloud(第 039 篇)链接Mysql数据库,通过JpaRepository编写数据库访问
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 阿里云购买磁盘后挂载
  • 听说你叫Java(二)–Servlet请求
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​软考-高级-系统架构设计师教程(清华第2版)【第15章 面向服务架构设计理论与实践(P527~554)-思维导图】​
  • # Panda3d 碰撞检测系统介绍
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • (2022 CVPR) Unbiased Teacher v2
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (delphi11最新学习资料) Object Pascal 学习笔记---第2章第五节(日期和时间)
  • (done) ROC曲线 和 AUC值 分别是什么?
  • (solr系列:一)使用tomcat部署solr服务
  • (独孤九剑)--文件系统
  • (十八)SpringBoot之发送QQ邮件
  • (四)c52学习之旅-流水LED灯
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)fock函数详解
  • (转)Linux整合apache和tomcat构建Web服务器
  • (转)树状数组
  • ***通过什么方式***网吧
  • .bat批处理(六):替换字符串中匹配的子串
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net企业级架构实战之7——Spring.net整合Asp.net mvc
  • // an array of int
  • [.net 面向对象程序设计进阶] (19) 异步(Asynchronous) 使用异步创建快速响应和可伸缩性的应用程序...
  • [acm算法学习] 后缀数组SA
  • [ACTF2020 新生赛]Include
  • [C puzzle book] types
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C#]C# winform部署yolov8目标检测的openvino模型
  • [C#]winform利用seetaface6实现C#人脸检测活体检测口罩检测年龄预测性别判断眼睛状态检测
  • [C++] Boost智能指针——boost::scoped_ptr(使用及原理分析)
  • [C++] sqlite3_get_table 的使用
  • [CTO札记]如何测试用户接受度?