在SharePoint环境中,创建自定义REST服务可以增强其功能,使其更加灵活和强大。本文将详细介绍如何在SharePoint中创建和部署一个自定义的REST服务。
在开始之前,请确保已经安装了Visual Studio和SharePoint开发工具。此外,还需要有对SharePoint服务器的访问权限,以便进行必要的配置和部署。
首先,需要创建一个空的SharePoint项目。在Visual Studio中,选择“文件”->“新建”->“项目”,然后选择“SharePoint”类别下的“2013”或“2016”版本的“空SharePoint项目”。将项目设置为“农场解决方案”。
接下来,需要为服务添加一个ISAPI映射文件夹。在项目上点击右键,选择“添加”->“SharePoint”->“SharePoint映射文件夹”。在弹出的对话框中,选择“ISAPI”文件夹并点击“确定”。
现在,需要创建WCF服务及其接口。在项目中添加两个类文件,分别命名为“ServiceApiToken.cs”和“IServiceApiToken.cs”。以下是这两个类的代码示例:
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
namespace ApiToken
{
[ServiceContract]
public interface IServiceApiToken
{
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json)]
string GetResponse();
}
}
using System;
using System.Net;
using System.Runtime.Serialization.Json;
using System.Text;
namespace ApiToken
{
public class ServiceApiToken : IServiceApiToken
{
public string GetResponse()
{
return "Executed";
}
}
}
在实现服务和接口之后,需要构建项目并找到程序集的公钥。可以通过Visual Studio命令提示符使用`sn -T`命令和程序集的路径来找到公钥。
由于SharePoint项目模板中没有svc模板,因此需要添加一个文本文件并将其重命名为“.svc”文件。在“.svc”文件中,需要指定之前找到的公钥。
<%@ Assembly Name="ApiToken, Version=1.0.0.0, Culture=neutral, PublicKeyToken=fe8eeb150d52c287" %>
<%@ ServiceHost Service="ApiToken.ServiceApiToken" %>
对于web.config,需要添加一个文本文件并将其重命名为“web.config”。以下是web.config的配置示例:
<configuration>
<system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior>
<serviceMetadata httpGetEnabled="true" httpsGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
<endpointBehaviors>
<behavior name="customApiToken">
<webHttp />
</behavior>
</endpointBehaviors>
</behaviors>
<services>
<service name="ApiToken.ServiceApiToken">
<endpoint address="" behaviorConfiguration="customApiToken" binding="webHttpBinding" contract="ApiToken.IServiceApiToken">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
</system.serviceModel>
</configuration>