Каждый раз, когда я пытаюсь использовать один из асинхронных методов для выполнения запроса Google API, он завершается сбоем только в веб-сервисе asp.net, происходит сбой без вывода сообщений, без исключений, только при тестировании в localhost:
This XML file does not appear to have any style information associated with it.
The document tree is shown below.
<TaskOfString xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://tempuri.org/"/>
Если я переключаю метод на версию синхронизации, все работает без проблем.
Например, смотрите мои комментарии здесь:
private async Task<XmlDocument> GetListAsync()
{
LogInfo("Descargando lista de juntas");
try
{
if (_DriveService == null)
throw new ArgumentNtullException("service");
LogInfo("DriveService no es null");
var request = _DriveService.Files.List();
request.Q = $"name = '{_ListName}' and trashed = false";
request.Fields = "files(id,parents)";
LogInfo("Preparado request para descargar lista de juntas: {0}", request.Q);
var result = request.Execute();//<-- this works
//var result = await request.ExecuteAsync(); <-- this fails silently
LogInfo("Request para lista juntas terminado con número de resultados: {0}", result.Files.Count);
Вы можете увидеть, что после строк request.Execute
есть журнал. Если я использовал асинхронную версию, что журнал никогда не записывается, также строка никогда не будет достигнута, если я поставлю точку останова. Если я использую версию синхронизации, все будет работать как надо.
Я пробовал это с Files.List
ExecuteAsync
и Files.Get
DownloadAsync
с тем же результатом, поэтому я полагаю, что это произойдет так же и с другими запросами.
Некоторые идеи о том, почему это происходит?
PS:
Я только что сделал чистый проект asp.net. Добавлен сервисный ключ учетной записи, добавлен минимальный код для его воспроизведения и те же результаты. Я думаю, что я должен открыть вопрос на github по этому поводу.