类型' System.ArgumentException'的例外情况发生在Google.Apis.dll中,但未在用户代码

时间:2017-06-06 08:22:46

标签: asp.net google-api google-api-client google-api-dotnet-client

我正在尝试连接Google云端硬盘服务客户端,但我收到此异常,但我没有得到任何解决方案。这是我的代码。

public static DriveService GetDriveClient()
    {
        var credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                new ClientSecrets { ClientId = clientID, ClientSecret = clientSecret }
                , scopes
                , Environment.UserName
                , CancellationToken.None
                , new FileDataStore(credPath, true)
            ).Result;

        // Create Drive API service.
        var service = new DriveService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential,
            ApplicationName = appName,
        });

        return service;
    }

我在黄色屏幕中收到以下错误:

无效的应用程序名称 参数名称:ApplicationName

2 个答案:

答案 0 :(得分:1)

您用于设置appName的{​​{1}}值无效。

ApplicationName直接在HTTP ApplicationName标头中使用,因此必须符合RFC2616 page 17上的User-Agent规范。

自发布v1.27.0起,它使用System.Net.Http.Headers.ProductInfoHeaderValue.TryParse()方法检查有效性。见BaseClientService.cs line 120

答案 1 :(得分:0)

.NET不像应用程序名称中的任何特殊字符。 我从Google API快速入门中复制了代码并不断收到错误。

//static string ApplicationName = "Drive API .NET Quickstart"; //DOESN'T WORK!
static string ApplicationName = "oneWord";   //WORKS!

可能需要URL编码或其他一些处理,但上面修复了我的问题。