首页 > 解决方案 > Google api 请求异步方法静默失败,但同步方法在 asp.net 网络服务中工作

问题描述

每次我尝试使用其中一种异步方法来执行 google api 的请求时,它只会在 asp.net Web 服务中静默失败,它静默失败,没有例外,只有在 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'sExecuteAsyncFiles.Get'尝试过,DownloadAsync结果相同,所以我想其他请求也会发生同样的情况。

关于为什么会发生这种情况的一些想法?

PS:我刚刚做了一个干净的 asp.net 项目。添加了服务帐户密钥,添加了重现它的最少代码,结果相同。我想我应该在 github 上打开一个关于这个的问题。

标签: c#asp.netweb-servicesgoogle-api

解决方案


推荐阅读