问题描述
我正在尝试使用 Function App 实现远程事件接收器。所以,我创建了一个 C# Http Trigger 函数。请在下面找到代码。
using System.Net;
using Microsoft.AspNetCore.Mvc;
using Microsoft.Extensions.Primitives;
using Newtonsoft.Json;
using System.Xml;
using System.Collections.Concurrent;
using System.Threading;
using System.Threading.Tasks;
public static async Task<IActionResult> Run(HttpRequest req,ILogger log)
{
log.Loginformation("C# HTTP trigger function processed a request.");
string requestBody = String.Empty;
using (StreamReader streamReader = new StreamReader(req.Body))
{
requestBody = await streamReader.ReadToEndAsync();
}
XmlDocument doc = new XmlDocument();
doc.LoadXml(requestBody);
XmlNodeList elemlist = doc.GetElementsByTagName("AfterUrl");
string filename = elemlist[0].InnerXml.Split("/")[1];
if(filename.Contains("clientA")){
log.Loginformation("it contains..");
var tokenSource = new CancellationTokenSource();
tokenSource.Cancel();
}
string responseMessage = "triggered";
return new OkObjectResult(responseMessage);
}
我使用下面的 PowerShell 脚本将上述函数作为远程事件接收器与 SharePoint 文档库相关联
$password= "Password"
$siteUrl= “Provide your siteurl”
$encpassword = convertto-securestring -String $password -AsPlainText -Force
$cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username,$encpassword
Connect-PnPOnline -Url $siteUrl -Credentials $cred -ErrorAction Stop
$functionUrl= “Provide your Function URL copied in prevIoUs step”
Add-PnPEventReceiver -List "Site Pages" -Name HandbookEventReceiver -Url $functionUrl -EventReceiverType ItemAdding -Synchronization Synchronous
每当用户将任何文档添加到文档库时,都会触发功能。从上面的 C# 代码中,我正在获取用户将在文档库中上传/创建的文档的名称。 我想限制用户创建/上传文件名中包含特定文本的文档,例如“客户A”。。
解决方法
SharePoint before event(同步)可以取消,因为它在完成操作之前被触发。可以应用任何验证,也可以使用事件属性取消事件。
public override void ItemAdding(SPItemEventProperties properties) {
base.ItemAdding(properties);
if (condition = true) {
properties.Cancel = True;
}
}
要取消ItemAdding事件,可以参考How to cancel the actions using Event Receiver?、Using SharePoint Remote Event Receivers with Azure Functions and TypeScript、SharePoint Remote Event Receivers using Azure Function和Handle events in SharePoint Add-ins