3-5SharePoint 开发自定义WCF服务

新建wcf服务接口类

 引入wcf使用的类库

 

接口的

IGetWebTitle.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.ServiceModel;



namespace ljzCustomWcf
{

    [ServiceContract]
    public interface IGetWebTitle
    {
        [OperationContract]
        string GetSPWebTitle(string SiteUrl, string WebUrl);
    }

}

 

 wcf的实现类: 继承上述接口并实现

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Runtime.Serialization;
using System.ServiceModel;

using Microsoft.SharePoint.Client.Services;
using Microsoft.SharePoint;
using System.ServiceModel.Activation;


namespace ljzCustomWcf
{
    [BasicHttpBindingServiceMetadataExchangeEndpointAttribute]
    [AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)]
    class GetWebTitle:IGetWebTitle
    {
        public string GetSPWebTitle(string SiteUrl, string WebUrl)
        {
            string title = string.Empty;
            SPSecurity.RunWithElevatedPrivileges(delegate ()
            {
                using (SPSite site = new SPSite(SiteUrl))
                {
                    using (SPWeb web = site.OpenWeb(WebUrl))
                    {
                        title = web.Title;
                    }
                }
            });
            return title;
        }

    }
}

wcf前台文件新建,映射至 isapi

新建 svc前端文件

<%@ServiceHost Language="C#" Debug="true"
    Service="ljzCustomWcf.GetWebTitle,ljzCustomWcf, Version=1.0.0.0, Culture=neutral, PublicKeyToken=05d45f268bd901c4"
    Factory="Microsoft.SharePoint.Client.Services.MultipleBaseAddressBasicHttpBindingServiceHostFactory, Microsoft.SharePoint.Client.ServerRuntime, Version=16.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>

部署

 

部署后svc前端文件位置

部署后程序集dll文件位置

 

 

iis网站中的位置

 

 

客户端调用

添加服务引用

 

调用

目录

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Collections.Generic;
using System.ServiceModel;
using System.Net;

namespace ljzCustomWcfDiaoYong
{
    class Program
    {
        static void Main(string[] args)
        {
            BasicHttpBinding binding = new BasicHttpBinding();
            binding.Security.Mode = BasicHttpSecurityMode.TransportCredentialOnly;
            binding.Security.Transport.ClientCredentialType = HttpClientCredentialType.Ntlm;
            EndpointAddress endpoint =
            new EndpointAddress("http://localhost:8000/_vti_bin/GetWebTitle.svc");
            ServiceReference1.GetWebTitleClient proxy = new ServiceReference1.GetWebTitleClient(binding, endpoint);
            NetworkCredential nc = proxy.ClientCredentials.Windows.ClientCredential;
            nc.UserName = "spsetupadmin";
nc.Password = "ljz815911L";
            nc.Domain = "sp";
            string tt = proxy.GetSPWebTitle("http://sp2016:8000/sites/topsite/", "");
            Console.WriteLine(tt);

        }
    }
}

目录

 

 

posted @ 2020-05-28 14:13  七秒钟得记忆  阅读(102)  评论(0)    收藏  举报