You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用C#添加OneNote页面时抛出ODataError异常求助

解决OneNote页面创建时的ODataError问题

首先,先捕获异常并查看详细错误信息,这能帮你定位具体问题:

private async Task CreateOnenotePage(string sectionId, string htmlString)
{
    var graphClient = GraphHelper._userClient;

    var onenotePage = new OnenotePage();
    byte[] contentBytes = Encoding.UTF8.GetBytes(htmlString);
    onenotePage.Content = contentBytes;

    try
    {
        var response = await graphClient.Me.Onenote.Sections[sectionId].Pages.PostAsync(onenotePage);
    }
    catch (ODataError odataError)
    {
        // 打印详细错误信息
        Console.WriteLine($"错误消息:{odataError.Error.Message}");
        foreach (var detail in odataError.Error.Details)
        {
            Console.WriteLine($"错误详情:{detail.Message}");
        }
    }
}

核心问题:页面内容格式不符合要求

你当前直接将HTML字符串转字节数组赋值给Content的方式不符合OneNote API的要求。OneNote创建页面需要完整的HTML结构,且推荐通过MultipartFormDataContent来传递内容,而不是直接设置OnenotePage.Content。

修改后的正确代码:

private async Task CreateOnenotePage(string sectionId, string htmlString)
{
    var graphClient = GraphHelper._userClient;

    // 构造符合OneNote要求的完整HTML文档
    var fullHtml = $@"
<!DOCTYPE html>
<html>
<head>
    <title>新页面</title>
</head>
<body>
    {htmlString}
</body>
</html>";

    // 构建multipart/form-data内容,这是OneNote API期望的格式
    var multipartContent = new MultipartFormDataContent();
    var htmlContent = new StringContent(fullHtml, Encoding.UTF8, "text/html");
    multipartContent.Add(htmlContent, "Presentation");

    try
    {
        var response = await graphClient.Me.Onenote.Sections[sectionId].Pages.PostAsync(multipartContent);
    }
    catch (ODataError odataError)
    {
        Console.WriteLine($"错误消息:{odataError.Error.Message}");
        foreach (var detail in odataError.Error.Details)
        {
            Console.WriteLine($"错误详情:{detail.Message}");
        }
    }
}

额外注意事项

  • 替换async void为async Task:async void仅适用于事件处理程序,普通异步方法使用async Task能避免潜在的异步操作失控问题。
  • 权限确认:确保应用已申请Notes.Create权限(你能创建分区,大概率权限没问题,但可以再核对)。
  • HTML限制:OneNote对HTML支持有限,避免使用复杂CSS或JavaScript,尽量使用基础HTML标签。

内容的提问来源于stack exchange,提问作者user3673052

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.21 06:42:52