值不能为空。参数名称:baseUri
Value cannot be null. Parameter name: baseUri
我在 C# 控制台应用程序中使用具有服务帐户授权的 Google BigQuery API。
当我尝试加载 CSV 作业时,它抛出“值不能为空。
参数名称:baseUri" 异常。它仅针对单个 table,当我更改 table 名称时,它全部起作用。
这是堆栈跟踪:
at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at Google.Apis.Upload.ResumableUpload`1.<UploadCoreAsync>d__e.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis\Apis\[Media]\Upload\ResumableUpload.cs:line 459
职位上传代码:
JobsResource.InsertMediaUpload InsertMediaUpload = new obsResource.InsertMediaUpload(BigQueryService, Job, Job.JobReference.ProjectId, fileStream, "application/octet-stream");
var JobInfo = InsertMediaUpload.UploadAsync();
谢谢。
我设法找到了问题的根本原因和解决方案。
实际错误: Table 架构不匹配。
原因: 在大查询中 table 需要字段模式。我从这个查询“Select * From Table-name Limit 1”的响应中得到 table 模式,因为无法构建新模式。当我从查询响应中获取 table 模式时,字段模式更改为 NULLABLE。这就是为什么我得到架构不匹配。
向 Google 开发人员提问:
- 当我们从 Response 中获取模式时,为什么所有字段模式都是 NULLABLE?
- 为什么Google API 没有return 实际错误,它只是抛出一个常见的错误语句,很烦人需要fiddler 来获取实际错误,那么我们将如何解决我们的生产问题。生产环境也需要fiddler吗?没有意义。
开发者建议:
使用 Fiddler 工具获取实际错误。在我的例子中,我从 Inspectors 选项卡下的 Textview 得到实际错误。希望这个 post 也能有所帮助。
谢谢。
我在 C# 控制台应用程序中使用具有服务帐户授权的 Google BigQuery API。
当我尝试加载 CSV 作业时,它抛出“值不能为空。 参数名称:baseUri" 异常。它仅针对单个 table,当我更改 table 名称时,它全部起作用。
这是堆栈跟踪:
at Microsoft.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccess(Task task)
at Microsoft.Runtime.CompilerServices.TaskAwaiter.ValidateEnd(Task task)
at Microsoft.Runtime.CompilerServices.ConfiguredTaskAwaitable`1.ConfiguredTaskAwaiter.GetResult()
at Google.Apis.Upload.ResumableUpload`1.<UploadCoreAsync>d__e.MoveNext() in c:\code\google.com\google-api-dotnet-client\default\Tools\Google.Apis.Release\bin\Debug\test\default\Src\GoogleApis\Apis\[Media]\Upload\ResumableUpload.cs:line 459
职位上传代码:
JobsResource.InsertMediaUpload InsertMediaUpload = new obsResource.InsertMediaUpload(BigQueryService, Job, Job.JobReference.ProjectId, fileStream, "application/octet-stream");
var JobInfo = InsertMediaUpload.UploadAsync();
谢谢。
我设法找到了问题的根本原因和解决方案。
实际错误: Table 架构不匹配。
原因: 在大查询中 table 需要字段模式。我从这个查询“Select * From Table-name Limit 1”的响应中得到 table 模式,因为无法构建新模式。当我从查询响应中获取 table 模式时,字段模式更改为 NULLABLE。这就是为什么我得到架构不匹配。
向 Google 开发人员提问:
- 当我们从 Response 中获取模式时,为什么所有字段模式都是 NULLABLE?
- 为什么Google API 没有return 实际错误,它只是抛出一个常见的错误语句,很烦人需要fiddler 来获取实际错误,那么我们将如何解决我们的生产问题。生产环境也需要fiddler吗?没有意义。
开发者建议:
使用 Fiddler 工具获取实际错误。在我的例子中,我从 Inspectors 选项卡下的 Textview 得到实际错误。希望这个 post 也能有所帮助。
谢谢。