C# HTTP 触发函数处理了一个请求。令牌请求失败

问题描述 投票:0回答:1

我收到此记录:[错误] C# HTTP 触发器函数处理了请求。令牌请求失败。当我从门户运行 Azure Function 时。

当我从 Visual Studio(在我的本地)测试/运行应用程序时,它成功更新了该项目,但我无法重现该问题。

我做错了什么吗?

我正在 Azure 函数中使用 PnP.Framework 中的应用程序 id/secret 进行身份验证,如下所示:

        [FunctionName("RecordUpdate")]
        public static async Task<IActionResult> Run(
            [HttpTrigger(AuthorizationLevel.Function, "get", "post", Route = null)] HttpRequest req,
            Microsoft.Extensions.Logging.ILogger log)
        {
            log.LogInformation("C# HTTP trigger function processed a request.");

            string responseMessage = string.Empty;

            string siteUrl = req.Query["siteUrl"];
            string listName = req.Query["listName"];
            string listItemId = req.Query["listItemId"];

            string requestBody = await new StreamReader(req.Body).ReadToEndAsync();
            dynamic data = JsonConvert.DeserializeObject(requestBody);

            siteUrl = siteUrl ?? data?.siteUrl;
            listName = listName ?? data?.listName;
            listItemId = listItemId ?? data?.listItemId;

            PnP.Framework.AuthenticationManager authenticationManager = new();
            try
            {
                string?[] appDetails = GetAppConfiguration(log);
                using (ClientContext context = authenticationManager.GetACSAppOnlyContext(siteUrl, appDetails[0], appDetails[1]))
                {
                    context.RequestTimeout = System.Threading.Timeout.Infinite;

                    List list = context.Web.Lists.GetByTitle(listName);
                    context.Load(list);
                    context.ExecuteQuery();

                    int id = 0;
                    bool isValidId = Int32.TryParse(listItemId, out id);

                    if (list != null)
                    {
                        if (isValidId)
                        {
                            ListItem item = list.GetItemById(id);
                            context.Load(item);
                            context.ExecuteQuery();

                            if (item != null) { /* my code to update Item goes here */ }
                        }
                    }
                }
            }
        }
azure function authentication sharepoint token
1个回答
0
投票

请参阅:Azure Functions 身份验证

根据错误消息,身份验证存在问题。

GetAppConfiguration
是否返回预期的应用程序 ID 和秘密?确保用于身份验证的应用程序 ID 具有必要的权限。

如果您已检查所有内容,请添加一些更详细的日志记录以缩小问题范围:从 Azure Function HttpTrigger 返回错误详细信息

© www.soinside.com 2019 - 2024. All rights reserved.