Google apis for .Net の使用時に問題が発生しています。サービスを呼び出し、何らかの理由で呼び出しが失敗すると、GoogleApiException がスローされます。例外では、HttpStatusCode は常に 0 です。メッセージからステータス コードを解析できますが、これはもちろん良い解決策ではありません。
NuGet (1.5.0.28972) の最新のバイナリを使用しています。
ExponentialBackoff アルゴリズムを機能させるのにも問題があり、この問題に関連していると思います。
以下は、動作を複製するためのコードです。
const string ServiceAccount = "000000000000@developer.gserviceaccount.com";
const string KeyFile = @"C:\privatekey.p12";
const string KeyPass = "notasecret";
const string ApplicationName = "Test";
const string User = "admin@some-domain.com"; // this is the user you wish to act for
static void Main(string[] args)
{
var certificate = new X509Certificate2(KeyFile, KeyPass,
X509KeyStorageFlags.Exportable);
var provider = new AssertionFlowClient(GoogleAuthenticationServer.Description, certificate)
{
ServiceAccountId = ServiceAccount,
Scope = DirectoryService.Scopes.AdminDirectoryUser.GetStringValue(),
ServiceAccountUser = User,
};
var authenticator = new OAuth2Authenticator<AssertionFlowClient>(provider, AssertionFlowClient.GetState);
var initializer = new BaseClientService.Initializer
{
Authenticator = authenticator,
DefaultExponentialBackOffPolicy = BaseClientService.ExponentialBackOffPolicy.UnsuccessfulResponse503
};
var service = new DirectoryService(initializer);
// This will throw a GoogleApiException the the HttpStatusCode is 0 (Should be 409)
var user = service.Users.Get("none-existing-user@some-domain.com").Execute();
}
よろしく /Tor