Почему приложение C# не может зарегистрировать устройство в MS Intune через API Microsoft Graph?C#

Место общения программистов C#
Ответить
Anonymous
 Почему приложение C# не может зарегистрировать устройство в MS Intune через API Microsoft Graph?

Сообщение Anonymous »

Я пытаюсь создать приложение C#, которое будет регистрировать устройства в Intune через Microsoft Graph API, но после вызова graphClient.DeviceManagement.WindowsAutopilotDeviceIdentities.PostAsync(newDevice) оно продолжает выдавать это исключение:
Не существует маршрута OData, соответствующего шаблону ~/singleton/navigation с HTTP-командой POST для запроса /DeviceEnrollmentFE/StatelessDeviceEnrollmentFEService/deviceManagement/windowsAutopilotDeviceIdentities."} Microsoft.Graph.Models.ODataErrors .ODataError
Прежде всего, можно зарегистрировать устройства в Intune, когда я использую сценарий PowerShell с тем же идентификатором клиента/идентификатором приложения/секретом приложения, который я использую. в моем приложении C#.
Проблема также не должна быть вызвана недостаточными разрешениями приложения. В Azure AD приложение имеет следующие разрешения, все с согласия администратора:
  • DeviceManagementManagedDevices.ReadWrite.All
  • DeviceManagementServiceConfig.ReadWrite.All
  • DeviceManagementApps.ReadWrite. Все
Список всех разрешений
Когда я исследовал связь с сервером MS, мое приложение правильно звонит и получает Токен доступа с сервера. Но после вызова метода регистрации пакет не отправляется:
graphClient.DeviceManagement.WindowsAutopilotDeviceIdentities.PostAsync(newDevice);
и это просто вызывает исключение, упомянутое выше.
Кто-нибудь знает, как заставить приложение C# взаимодействовать с MS Intune через Graph API?
Вот упрощенный пример кода, который я использую:

Код: Выделить всё

namespace IntuneTest
{
public partial class MainWindow : Window
{
private GraphServiceClient graphClient;

public MainWindow()
{
InitializeComponent();
InitializeGraphClient();
}

// Initialize Graph Client with ClientSecretCredential for authentication
private async void InitializeGraphClient()
{
var credential = new ClientSecretCredential(
"TenantID",   // Replace with your Tenant ID
"AppID",      // Replace with your App ID
"ClientSecret" // Replace with your Client Secret
);

graphClient = new GraphServiceClient(credential, new[] { "https://graph.microsoft.com/.default" });

var token = await credential.GetTokenAsync(new TokenRequestContext(new[] { "https://graph.microsoft.com/.default" }), CancellationToken.None);
Debug.WriteLine($"Access Token: {token.Token}");
}

// Register a Windows Autopilot device
private async Task RegisterDeviceAsync()
{
try
{
var newDevice = new WindowsAutopilotDeviceIdentity
{
SerialNumber = "6WX8WT2",   // Required: Serial number
Manufacturer = "Dell Inc.", // Optional
Model = "Latitude 5590",    // Optional
EnrollmentState = EnrollmentState.Enrolled
};

await graphClient.DeviceManagement.WindowsAutopilotDeviceIdentities.PostAsync(newDevice);
Debug.WriteLine("Device registered.");
MessageBox.Show("Device registered successfully!", "Success");
}
catch (ServiceException ex)
{
Debug.WriteLine($"Error: {ex.Message}");
MessageBox.Show($"Error registering device: {ex.Message}", "Error");
}
}

// Triggered by button click to register the device
private async void Button_Click(object sender, RoutedEventArgs e)
{
await RegisterDeviceAsync();
}
}
}
Большое спасибо!

Подробнее здесь: https://stackoverflow.com/questions/790 ... t-graph-ap
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»