Google api 无法加载文件或程序集';Google.api,版本=1.27.0.0,文化=中性,PublicKeyToken=4b01fa6e34db77ab';或者它的一个依赖项。

Google api 无法加载文件或程序集';Google.api,版本=1.27.0.0,文化=中性,PublicKeyToken=4b01fa6e34db77ab';或者它的一个依赖项。,google-api,gmail,gmail-api,google-api-client,google-api-dotnet-client,Google Api,Gmail,Gmail Api,Google Api Client,Google Api Dotnet Client,我需要在我的web应用程序中实现gmail。在我的web应用程序中实现Gmail时,我遇到了提到的异常 我已经尝试过Gmail API Quickstart中提到的步骤。。。 当我试图创建Gmail服务的对象时,我遇到了一个异常。我的代码如下 static UserCredential GetGmailUserCredential() { UserCredential credential; string[] scopes = { GmailSe

我需要在我的web应用程序中实现gmail。在我的web应用程序中实现Gmail时,我遇到了提到的异常

我已经尝试过Gmail API Quickstart中提到的步骤。。。

当我试图创建Gmail服务的对象时,我遇到了一个异常。我的代码如下

    static UserCredential GetGmailUserCredential()
    {
        UserCredential credential;
        string[] scopes = { GmailService.Scope.GmailReadonly };
        string credPath = System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal), ".credentials/gmail-dotnet-quickstart.json");
        try
        {
            using (var stream = new System.IO.FileStream(@"D:\Projects_Temp\Learning\Webform\GSuite\client_secret.json", System.IO.FileMode.Open, System.IO.FileAccess.Read))
            {
                credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                    GoogleClientSecrets.Load(stream).Secrets,
                    scopes,
                    Environment.UserName,
                    CancellationToken.None,
                    new FileDataStore(credPath, true)).Result;
            }
        }
        catch (Exception ex)
        {
            credential = GoogleWebAuthorizationBroker.AuthorizeAsync(new ClientSecrets { ClientId = clientID, ClientSecret = clientSecret }
                                                                                         , scopes
                                                                                         , Environment.UserName
                                                                                         , CancellationToken.None
                                                                                         , new FileDataStore(credPath, true)).Result;
        }

        return credential;
    }

    public static GmailService GetGmailClient()
    {
        var credential = GetGmailUserCredential();
        // Create Drive API service.
        var service = new GmailService(new BaseClientService.Initializer()
        {
            HttpClientInitializer = credential
        });

        return service;
    }

    public static List<Label> GetLabels(GmailService service)
    {
        // Define parameters of request.
        UsersResource.LabelsResource.ListRequest request = service.Users.Labels.List("me");
        // List labels.
        return request.Execute().Labels.ToList();
    }

protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
            using (GmailService service = GSuiteHelper.GetGmailClient())
            {
                var lst = GSuiteHelper.GetLabels(service);
            }
        }
    }
staticusercredential GetGmailUserCredential()
{
用户凭证;
字符串[]范围={GmailService.Scope.GmailReadonly};
字符串credPath=System.IO.Path.Combine(System.Environment.GetFolderPath(System.Environment.SpecialFolder.Personal),“.credentials/gmail dotnet quickstart.json”);
尝试
{
使用(var stream=new System.IO.FileStream(@“D:\Projects\u Temp\Learning\Webform\GSuite\client\u secret.json”、System.IO.FileMode.Open、System.IO.FileAccess.Read))
{
凭证=GoogleWebAuthorizationBroker.AuthorizationAsync(
GoogleClientSecrets.Load(stream.Secrets),
范围,
Environment.UserName,
取消令牌。无,
新文件数据存储(credPath,true))。结果;
}
}
捕获(例外情况除外)
{
credential=GoogleWebAuthorizationBroker.AuthorizationAsync(新的ClientSecrets{ClientId=ClientId,ClientSecret=ClientSecret}
,范围
,Environment.UserName
,CancellationToken。无
,新文件数据存储(credPath,true))。结果;
}
返回凭证;
}
公共静态Gmail服务getGmail客户端()
{
var-credential=GetGmailUserCredential();
//创建驱动器API服务。
var service=new-GmailService(new-BaseClientService.Initializer()
{
HttpClientInitializer=凭证
});
回程服务;
}
公共静态列表GetLabels(Gmail服务)
{
//定义请求的参数。
UsersResource.LabelsResource.ListRequest请求=service.Users.Labels.List(“me”);
//列出标签。
return request.Execute().Labels.ToList();
}
受保护的无效页面加载(对象发送方、事件参数e)
{
如果(!IsPostBack)
{
使用(GmailService service=gsuitehelp.GetGmailClient())
{
var lst=GSuiteHelper.GetLabels(服务);
}
}
}

检查Web应用程序的Web.config。我在我的日记里看到了一个重复的条目。其中一个拥有所有的公共令牌。所以我猜它是区分大小写的,在升级版本时没有写得太多。所以它一直使用旧版本号,我显然已经卸载了。 希望这有帮助。 这就是存在的复制品

<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
  <dependentAssembly>
    <assemblyIdentity name="Google.Apis.Auth" publicKeyToken="4B01FA6E34DB77AB" culture="neutral" />
    <bindingRedirect oldVersion="0.0.0.0-1.27.1.0" newVersion="1.27.1.0" />
  </dependentAssembly>


您是否安装了nuget软件包?您创建了什么类型的项目,目标是什么框架?另请注意,正如教程中所述,代码是为“简单的.NET控制台应用程序”设计的,它不适用于web应用程序。此示例也不适用于控制台应用程序。是的,我已经完成了文章中提到的所有事情。我已经用同样的方法实现了GoogleDrive和GoogleCalendar&它们正在工作。只有此功能根本不起作用。