【发布时间】:2014-08-08 09:59:57
【问题描述】:
遵循here 概述的 Google 代码示例。
我已经在我自己的测试项目中复制了他们的代码示例(在 Visual Studio Express 2013 中使用 MVC 4 模板),我无法运行该项目,因为我遇到了这些错误:
错误 1 由于 'Google.Apis.Sample.MVC4.Controllers.HomeController.IndexAsync(System.Threading.CancellationToken)' 是一个返回 'Task' 的异步方法,因此 return 关键字后面不能跟对象表达式。您是否打算返回“任务”? f:\users\sausages\documents\visual studio 2013\Projects\GooglePOC\GooglePOC\Controllers\googleAnalytics.cs 33 17 GooglePOC
错误 2 由于 'Google.Apis.Sample.MVC4.Controllers.HomeController.IndexAsync(System.Threading.CancellationToken)' 是返回 'Task' 的异步方法,因此 return 关键字后面不能跟对象表达式。您是否打算返回“任务”? f:\users\sausages\documents\visual studio 2013\Projects\GooglePOC\GooglePOC\Controllers\googleAnalytics.cs 37 17 GooglePOC
这是它抱怨的代码块:
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Web.Mvc;
using Google.Apis.Auth.OAuth2.Mvc;
using Google.Apis.Drive.v2;
using Google.Apis.Services;
using Google.Apis.Sample.MVC4;
namespace Google.Apis.Sample.MVC4.Controllers
{
public class HomeController : Controller
{
public async Task IndexAsync(CancellationToken cancellationToken)
{
var result = await new AuthorizationCodeMvcApp(this, new AppFlowMetadata()).
AuthorizeAsync(cancellationToken);
if (result.Credential != null)
{
var service = new DriveService(new BaseClientService.Initializer
{
HttpClientInitializer = result.Credential,
ApplicationName = "ASP.NET MVC Sample"
});
// YOUR CODE SHOULD BE HERE..
// SAMPLE CODE:
var list = await service.Files.List().ExecuteAsync();
ViewBag.Message = "FILE COUNT IS: " + list.Items.Count();
return View();
}
else
{
return new RedirectResult(result.RedirectUri);
}
}
}
}
【问题讨论】:
-
Task与void几乎相同,但在异步上下文中,因此它可能会抱怨这一点。如果您改为返回Task<ViewResult>,它会改变吗?
标签: c# .net google-api