【问题标题】:Google Drive API v3 not working on IISGoogle Drive API v3 无法在 IIS 上运行
【发布时间】:2018-09-29 10:59:09
【问题描述】:

我在 ASP.NET Core WebApi 项目中使用 Google Drive API v3,但它不适用于 IIS。 它可以通过 Kestrel 服务器上的 Visual Studio 2017 在本地正常工作。但是,如果我尝试在 IIS 上进行部署,它就会挂起。

用于列出位于文件夹中的图像文件的代码 sn-p:

public static Google.Apis.Drive.v3.Data.FileList ListFiles(DriveService service, string folderId)
{
    try
    {
        var request = service.Files.List();
        request.PageSize = 100;
        request.Fields = "nextPageToken, files(id, name)";
        if (!String.IsNullOrEmpty(folderId))
        {
            request.Q = "'" + folderId + "' in parents " + " and mimeType='image/jpeg'";
        }
        return request.Execute();
    }
    catch (Exception ex)
    {
        throw new Exception("Request failed.", ex);
    }
}

我很清楚 Google Drive API 支持用于 Web 应用程序的 OAuth 2.0 (ASP.NET MVC),如下所述: https://developers.google.com/api-client-library/dotnet/guide/aaa_oauth#web-applications-aspnet-mvc

请帮忙。谢谢。

【问题讨论】:

  • 请提供您在浏览器或控制台上获得的确切错误详细信息。
  • 请附上您的验证码。 IIS 服务器在哪里?我们说的是 Azure 吗?
  • 我认为这与 IIS 配置有关。尝试检查 .NET 的 Web applications (ASP.NET MVC) 实现。它说您需要“将重定向 URI 设置为 your_site/AuthCallback/IndexAsync”等等。此外,来自 github forum 的一些指针可能会有所帮助。
  • 我认为 Google 提供的大多数示例代码都可用于已安装的应用程序。它不适用于 Web 应用程序。

标签: asp.net iis asp.net-web-api asp.net-core google-drive-api


【解决方案1】:

这看起来像我面临的问题。问题是您使用的授权代码可能来自为桌面应用程序截取的代码。这就是为什么它可以在你的本地机器上工作,但是一旦你部署它,一切都会改变。如果您尝试从服务器运行的应用程序使用此代码进行授权,它将尝试在该服务器机器上打开授权窗口并挂起。

一种解决方法是将 Google API 控制台中的应用程序类型更改为“其他”,但这有点冒险,因为您的用户将使用服务器指定的身份向 google 授权,并且您必须构建另一层安全性来过滤要求。

截至目前(2018 年 8 月 6 日),据我所知,Google 不支持 .net Core 进行网络服务器授权。您可以在 Github here 上跟踪进度。

如果你愿意切换到经典的 ASP MVC,你可以使用this 代码,没有问题。

另外,here 是一个类似的主题,如果它对您有所帮助的话。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-03
    • 2016-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多