如何在 azure function v1 中使用最新的 SharePoint PnP Core Online
How to use latest SharePoint PnP Core Online in azure function v1
我只是按照以下说明操作:
https://github.com/Azure/azure-functions-vs-build-sdk
尝试添加新版本的 newtonsoft.json
,然后安装了最新的 SharePointPnPCoreOnline
。
它在我的项目中运行良好,而且我可以在本地对我的事件网格触发器进行单元测试。
但是在我部署到 azure 之后,一个错误 happen.It 似乎函数没有加载正确的 DLL
Method not found: 'Newtonsoft.Json.Linq.JObject Microsoft.Azure.WebJobs.Extensions.EventGrid.EventGridEvent.get_Data()'.
并在出错时执行这段代码
[FunctionName("ProcessRequest")]
[Obsolete]
public static void Run([EventGridTrigger] string eventGridEvent, TraceWriter log)
{
EventGridEvent eventGridEventData = JsonConvert.DeserializeObject<EventGridEvent>(eventGridEvent);
var siteCreationInfo = eventGridEventData.Data.ToObject<SiteRequest>();
}
对这个问题非常困惑,并提出了所有解决方案,但找不到方法。
检查参考文献。
我的测试项目,它有警告,但代码运行成功。
string webTitle = string.Empty;
JObject jObject = JObject.Parse(@"{
'CPU': 'Intel',
'Drives': [
'DVD read/writer',
'500 gigabyte hard drive'
]
}");
try
{
//Create the client context
using (var clientContext = authenticationManager.GetSharePointOnlineAuthenticatedContextTenant(authArray[0], authArray[1], authArray[2]))
{
var web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
Console.WriteLine(web.Title);
webTitle = web.Title;
}
}
catch (Exception ex)
{
Console.WriteLine("Exception : " + ex.Message);
webTitle = ex.Message;
}
return req.CreateResponse(HttpStatusCode.OK, "Hello " + webTitle+ jObject["CPU"]);
在这种情况下,如果我们必须同时使用这两个库,似乎我们无法将对象直接转换为 eventgrid 对象。
EventGridEvent eventGridEventData = eventGridEvent.ToObject<EventGridEvent>();
由于库冲突,我们不能直接使用这个函数。
我们应该分别获取键和值:
JObject eventGridData = JObject.Parse(eventGridEvent);
var eventId = eventGridData["id"];
var siteData = eventGridData["data"];
我们应该以简单的方式进行数据转换
我只是按照以下说明操作:
https://github.com/Azure/azure-functions-vs-build-sdk
尝试添加新版本的 newtonsoft.json
,然后安装了最新的 SharePointPnPCoreOnline
。
它在我的项目中运行良好,而且我可以在本地对我的事件网格触发器进行单元测试。
但是在我部署到 azure 之后,一个错误 happen.It 似乎函数没有加载正确的 DLL
Method not found: 'Newtonsoft.Json.Linq.JObject Microsoft.Azure.WebJobs.Extensions.EventGrid.EventGridEvent.get_Data()'.
并在出错时执行这段代码
[FunctionName("ProcessRequest")]
[Obsolete]
public static void Run([EventGridTrigger] string eventGridEvent, TraceWriter log)
{
EventGridEvent eventGridEventData = JsonConvert.DeserializeObject<EventGridEvent>(eventGridEvent);
var siteCreationInfo = eventGridEventData.Data.ToObject<SiteRequest>();
}
对这个问题非常困惑,并提出了所有解决方案,但找不到方法。
检查参考文献。
我的测试项目,它有警告,但代码运行成功。
string webTitle = string.Empty;
JObject jObject = JObject.Parse(@"{
'CPU': 'Intel',
'Drives': [
'DVD read/writer',
'500 gigabyte hard drive'
]
}");
try
{
//Create the client context
using (var clientContext = authenticationManager.GetSharePointOnlineAuthenticatedContextTenant(authArray[0], authArray[1], authArray[2]))
{
var web = clientContext.Web;
clientContext.Load(web);
clientContext.ExecuteQuery();
Console.WriteLine(web.Title);
webTitle = web.Title;
}
}
catch (Exception ex)
{
Console.WriteLine("Exception : " + ex.Message);
webTitle = ex.Message;
}
return req.CreateResponse(HttpStatusCode.OK, "Hello " + webTitle+ jObject["CPU"]);
在这种情况下,如果我们必须同时使用这两个库,似乎我们无法将对象直接转换为 eventgrid 对象。
EventGridEvent eventGridEventData = eventGridEvent.ToObject<EventGridEvent>();
由于库冲突,我们不能直接使用这个函数。 我们应该分别获取键和值:
JObject eventGridData = JObject.Parse(eventGridEvent);
var eventId = eventGridData["id"];
var siteData = eventGridData["data"];
我们应该以简单的方式进行数据转换