Я пытаюсь запланировать встречу Outlook в календаре другого пользователя с помощью API Microsoft Graph в моем веб-API ASP.NET, написанном на C# и работающем на .NET 4.8.1. Когда я запускаю показанный здесь код API, он застревает в тупике:
var result = await graphClient.Users[""]
.Events
.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Eastern Standard Time\"");
});
Выполнение кода консольного приложения приводит к успешному планированию встречи на указанную календарную дату. Я попытался опустить часть кода API async/await, в результате код выполняется, но в конечном итоге выдается исключение NullReferenceException, даже при использовании статических значений, которые действительны и работают при запуске консольного приложения.< /p>
Я также пробовал использовать
Task.Run(async () => await...
но при этом блокируется вся программа. И консольное приложение, и API используют .NET Framework v4.8.1.
Что здесь может быть не так? Буду очень признателен за любую помощь, я уже несколько дней пытаюсь разобраться с этим, используя видео и статьи.
Код API (не работает):
internal async Task ScheduleOutlookAppointment()
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
// Values from app registration
var clientId = "";
var tenantId = "";
var clientSecret = "";
// using Azure.Identity;
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var requestBody = new Event
{
Subject = "Test",
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = "Testing",
},
Start = new DateTimeTimeZone
{
DateTime = "2025-01-16T12:00:00",
TimeZone = "Eastern Standard Time",
},
End = new DateTimeTimeZone
{
DateTime = "2025-01-16T14:00:00",
TimeZone = "Eastern Standard Time",
},
Location = new Location
{
DisplayName = "Test",
},
Attendees = new List{new Attendee{ EmailAddress = new EmailAddress
{
Address = ""
},
Type = AttendeeType.Required,},},
TransactionId = Guid.NewGuid().ToString(),
};
var result = await graphClient.Users[""].Events.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Eastern Standard Time\"");
});
return;
Код консольного приложения (работает):
static void Main(string[] args)
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
// Values from app registration
var clientId = "";
var tenantId = "";
var clientSecret = "";
// using Azure.Identity;
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var requestBody = new Event
{
Subject = "Test",
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = "Testing",
},
Start = new DateTimeTimeZone
{
DateTime = "2025-01-15T12:00:00",
TimeZone = "Eastern Standard Time",
},
End = new DateTimeTimeZone
{
DateTime = "2025-01-15T14:00:00",
TimeZone = "Eastern Standard Time",
},
Location = new Location
{
DisplayName = "It Worked",
},
Attendees = new List{new Attendee{EmailAddress = new EmailAddress
{
Address = ""
},
Type = AttendeeType.Required,},},
TransactionId = Guid.NewGuid().ToString(),
};
var result = graphClient.Users[""].Events.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Eastern Standard Time\"");
});
result.Wait();
Console.ReadLine();
}
Подробнее здесь: https://stackoverflow.com/questions/793 ... -framework
Microsoft Graph API Event.PostAsync в C# .NET Framework ⇐ C#
Место общения программистов C#
-
Anonymous
1737048160
Anonymous
Я пытаюсь запланировать встречу Outlook в календаре другого пользователя с помощью API Microsoft Graph в моем веб-API ASP.NET, написанном на C# и работающем на .NET 4.8.1. Когда я запускаю показанный здесь код API, он застревает в тупике:
var result = await graphClient.Users[""]
.Events
.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Eastern Standard Time\"");
});
Выполнение кода консольного приложения приводит к успешному планированию встречи на указанную календарную дату. Я попытался опустить часть кода API async/await, в результате код выполняется, но в конечном итоге выдается исключение NullReferenceException, даже при использовании статических значений, которые действительны и работают при запуске консольного приложения.< /p>
Я также пробовал использовать
Task.Run(async () => await...
но при этом блокируется вся программа. И консольное приложение, и API используют .NET Framework v4.8.1.
Что здесь может быть не так? Буду очень признателен за любую помощь, я уже несколько дней пытаюсь разобраться с этим, используя видео и статьи.
Код API (не работает):
internal async Task ScheduleOutlookAppointment()
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
// Values from app registration
var clientId = "";
var tenantId = "";
var clientSecret = "";
// using Azure.Identity;
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var requestBody = new Event
{
Subject = "Test",
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = "Testing",
},
Start = new DateTimeTimeZone
{
DateTime = "2025-01-16T12:00:00",
TimeZone = "Eastern Standard Time",
},
End = new DateTimeTimeZone
{
DateTime = "2025-01-16T14:00:00",
TimeZone = "Eastern Standard Time",
},
Location = new Location
{
DisplayName = "Test",
},
Attendees = new List{new Attendee{ EmailAddress = new EmailAddress
{
Address = ""
},
Type = AttendeeType.Required,},},
TransactionId = Guid.NewGuid().ToString(),
};
var result = await graphClient.Users[""].Events.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Eastern Standard Time\"");
});
return;
Код консольного приложения (работает):
static void Main(string[] args)
{
var scopes = new[] { "https://graph.microsoft.com/.default" };
// Values from app registration
var clientId = "";
var tenantId = "";
var clientSecret = "";
// using Azure.Identity;
var options = new ClientSecretCredentialOptions
{
AuthorityHost = AzureAuthorityHosts.AzurePublicCloud,
};
var clientSecretCredential = new ClientSecretCredential(
tenantId, clientId, clientSecret, options);
var graphClient = new GraphServiceClient(clientSecretCredential, scopes);
var requestBody = new Event
{
Subject = "Test",
Body = new ItemBody
{
ContentType = BodyType.Html,
Content = "Testing",
},
Start = new DateTimeTimeZone
{
DateTime = "2025-01-15T12:00:00",
TimeZone = "Eastern Standard Time",
},
End = new DateTimeTimeZone
{
DateTime = "2025-01-15T14:00:00",
TimeZone = "Eastern Standard Time",
},
Location = new Location
{
DisplayName = "It Worked",
},
Attendees = new List{new Attendee{EmailAddress = new EmailAddress
{
Address = ""
},
Type = AttendeeType.Required,},},
TransactionId = Guid.NewGuid().ToString(),
};
var result = graphClient.Users[""].Events.PostAsync(requestBody, (requestConfiguration) =>
{
requestConfiguration.Headers.Add("Prefer", "outlook.timezone=\"Eastern Standard Time\"");
});
result.Wait();
Console.ReadLine();
}
Подробнее здесь: [url]https://stackoverflow.com/questions/79362521/microsoft-graph-api-event-postasync-in-c-sharp-net-framework[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия