【发布时间】:2021-08-04 20:17:39
【问题描述】:
我正在尝试使用函数应用程序实现远程事件接收器。因此,我创建了一个 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”。。
【问题讨论】:
标签: azure-functions sharepoint-online event-receiver