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

使用C#+Microsoft Graph API向团队聊天发消息遇错误求助

解决Microsoft Graph API Beta版本C#发送聊天消息的错误问题

遇到的错误

  • 找不到类型或命名空间ChatMessage
  • 当前上下文中不存在authProvider
  • await运算符只能在async修饰的方法中使用,需将返回类型改为Task
  • Microsoft.Graph.GraphServiceClient不包含Chats定义,也无对应扩展方法

错误截图:
错误截图

原代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Graph;

namespace w
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        
            GraphServiceClient graphClient = new GraphServiceClient(authProvider);

            var chatMessage = new ChatMessage
            {
                Body = new ItemBody
                {
                    Content = "Hello world"
                }
            };

            await graphClient.Chats["19:056680e9-868a-49a2-bf96-2ba2d2c39b5d_76ff09a8-7650-426d-843b-3d1104128f25@unq.gbl.spaces"].Messages
      .Request()
      .AddAsync(chatMessage);
        }
    }
}

修正后的代码

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using Microsoft.Graph;
using Microsoft.Graph.Models;
using Azure.Identity;

namespace w
{
public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private async Task button1_Click(object sender, EventArgs e)
    {
        // 替换为你的应用认证信息
        var scopes = new[] { "https://graph.microsoft.com/.default" };
        var clientId = "你的应用客户端ID";
        var tenantId = "你的租户ID";
        var clientSecret = "你的应用客户端密钥";
        
        var authProvider = new ClientCredentialProvider(
            new ClientCredential(clientId, clientSecret),
            tenantId,
            scopes);

        var graphClient = new GraphServiceClient(authProvider);

        var chatMessage = new ChatMessage
        {
            Body = new ItemBody
            {
                Content = "Hello world"
            }
        };

        await graphClient.Chats["19:056680e9-868a-49a2-bf96-2ba2d2c39b5d_76ff09a8-7650-426d-843b-3d1104128f25@unq.gbl.spaces"].Messages
            .PostAsync(chatMessage);
    }
}

错误解决说明

  1. 找不到类型或命名空间ChatMessage

    • 原因:Beta版Graph API的实体类在Microsoft.Graph.Models命名空间下,而非稳定版的Microsoft.Graph
    • 解决:添加using Microsoft.Graph.Models;引用,确保安装Microsoft.Graph.Beta NuGet包(卸载稳定版Microsoft.Graph)
  2. 当前上下文中不存在authProvider

    • 原因:未初始化身份验证提供者实例
    • 解决:根据业务场景选择对应认证方式(示例用ClientCredentialProvider适用于后台服务),需安装Azure.Identity NuGet包,替换代码中的认证参数
  3. await运算符只能在async修饰的方法中使用

    • 原因:事件处理方法未标记为async,且返回类型不支持异步操作
    • 解决:将方法签名改为private async Task button1_Click(object sender, EventArgs e),WinForms允许异步事件处理方法返回Task
  4. GraphServiceClient不包含Chats定义

    • 原因:使用了稳定版Graph API包,Chats的Beta版接口仅在Microsoft.Graph.Beta中提供
    • 解决:切换到Microsoft.Graph.Beta NuGet包,同时Beta版添加消息的方法为PostAsync,而非稳定版的AddAsync

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 04:35:36