使用google drive从web服务上载文件c#基uri=null失败

使用google drive从web服务上载文件c#基uri=null失败,c#,web-services,google-drive-api,google-api-dotnet-client,C#,Web Services,Google Drive Api,Google Api Dotnet Client,我实现了一个web服务,它调用一个类,该类将pdf上传到Google Drive上的文件夹。然后我请求一个文件夹内容列表 问题是,如果使用main调用,则会上载pdf并完成列表 如果是webservice进行调用,则列表已完成,但上载失败,我可以在响应中看到异常: 基本uri为空 如果在使用main调用之后,我尝试使用localhost中的web服务(通过SoapUi)调用,那么web服务也可以上载pdf 实现gdrive API的类是相同的 我用来从gdrive获取服务的代码是: var ke

我实现了一个web服务,它调用一个类,该类将pdf上传到Google Drive上的文件夹。然后我请求一个文件夹内容列表

问题是,如果使用main调用,则会上载pdf并完成列表

如果是webservice进行调用,则列表已完成,但上载失败,我可以在响应中看到异常:

基本uri为空

如果在使用main调用之后,我尝试使用localhost中的web服务(通过SoapUi)调用,那么web服务也可以上载pdf

实现gdrive API的类是相同的

我用来从gdrive获取服务的代码是:

var keyFilePath = @"c:\Progetti\pippo.p12";       
var serviceAccountEmail = "reportbatch@appspot.gserviceaccount.com"; 

var certificate = new X509Certificate2(keyFilePath, "notasecret",
    X509KeyStorageFlags.Exportable); 

var credential = new  ServiceAccountCredential(new
 ServiceAccountCredential.Initializer(serviceAccountEmail)
             {
                  Scopes = Scopes
              }.FromCertificate(certificate));

var service = new DriveService(new BaseClientService.Initializer()
              {
                  HttpClientInitializer = credential,
                 ApplicationName = _ApplicationName,
              });
奇怪的是,列表是有效的,上传不是。 似乎是关于许可,但这两个电话之间的区别在哪里

因为这个原因我被封锁了,有人能帮我吗


大卫

好的,我猜一猜,然后说出它的权限。当您运行它时,它将按您的方式运行,但是当web服务运行它时,它将在设置web服务的应用程序池下运行。首先,我要确保web服务能够访问密钥文件

然后我将更改以下行

var certificate = new X509Certificate2(keyFilePath, "notasecret",
X509KeyStorageFlags.Exportable); 


我已经在Azure上看到了上述原因问题,并且此修复了它可能也适用于您。

好的,我将猜测并说出它的权限。当您运行它时,它将按您的方式运行,但是当web服务运行它时,它将在设置web服务的应用程序池下运行。首先,我要确保web服务能够访问密钥文件

然后我将更改以下行

var certificate = new X509Certificate2(keyFilePath, "notasecret",
X509KeyStorageFlags.Exportable); 


我已经在Azure上看到了上述原因问题,并且此解决方案可能也适用于您。

感谢DalmTo的快速回答。我刚刚解决了。错误base uri=null确实是某些dll版本的问题。安装并重新安装Google drive APi后,一切正常。奇怪的是,用main运行它我没有问题。你能用你的最终解决方案为这个线程添加一个答案吗,这对以后跟踪它会很好。谢谢谢谢DalmTo的快速回答。我刚刚解决了。错误base uri=null确实是某些dll版本的问题。安装并重新安装Google drive APi后,一切正常。奇怪的是,用main运行它我没有问题。你能用你的最终解决方案为这个线程添加一个答案吗,这对以后跟踪它会很好。谢谢