0

我試圖連接Google雲端硬盤服務客戶端,但出現此異常,我沒有收到任何解決方案。這是我的代碼。Google.Apis.dll發生類型'System.ArgumentException'的異常,但未在用戶代碼中處理

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; 
    } 

我得到的黃色屏幕以下錯誤:

無效的應用程序名稱 參數名:應用程序名稱

+0

首先告訴我們關於內部異常。內部異常內容。 – Rajput

+0

Innerexception爲null –

回答

1

您使用設置ApplicationName是無效的appName值。

ApplicationName直接用在HTTP User-Agent標題中,所以必須符合規範中的RFC2616 page 17

從版本v1.27.0開始,它使用System.Net.Http.Headers.ProductInfoHeaderValue.TryParse()方法來檢查有效性。請參閱BaseClientService.cs line 120

+0

我剛剛按照這裏提到的步驟... https://developers.google.com/drive/v3/web/quickstart/dotnet 你可以用簡單的方式解釋我解決這個問題嗎?問題bcz這工作很好,直到昨天? –

+0

正如Kut-Paste-Done所說,將ApplicationName更改爲不包含任何空格或點的內容。驗證在最新版本v1.27.0中變得更加嚴格;我會看到關於更新文檔以便示例正常工作。對困惑感到抱歉。 – Chris

+0

在接下來的一兩個小時內,我們將發佈v1.27.1,它將刪除ApplicationName驗證,恢復爲發佈v1.26.0行爲。一旦升級到v1.27.1,快速入門將無需更改即可使用。 – Chris

0

.NET不喜歡應用程序名稱中的任何特殊字符。 我複製了Google API快速入門中的代碼並不斷收到錯誤。

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

可能需要URL編碼或一些其他的處理,但上述固定我的問題。

相關問題