【问题标题】:Cancelling the ItemAdding Event : Remote Event Receiver Using Function App取消 ItemAdding 事件:使用函数应用程序的远程事件接收器
【发布时间】: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


    【解决方案1】:

    SharePoint 事件前(同步)可以取消,因为它在完成操作之前被触发。可以应用任何验证,也可以使用事件属性取消事件。

    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 TypeScriptSharePoint Remote Event Receivers using Azure FunctionHandle events in SharePoint Add-ins

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-04-07
      • 1970-01-01
      相关资源
      最近更新 更多