Gmail api mvc 5未获得IIS

时间:2017-06-24 18:35:42

标签: api model-view-controller gmail

我在我的mvc 5项目中使用gmail api,它在本地(调试模式)下工作正常

继承我的代码:

UserCredential credential1; var folder = System.Web.HttpContext.Current.Server.MapPath("/App_Data/MyGoogleStorage"); credential1 = await GoogleWebAuthorizationBroker.AuthorizeAsync( new ClientSecrets { ClientId = "xxxxxxxxxxxx.apps.googleusercontent.com", ClientSecret = "xxxxxxxxxxxxxxxxxxx" }, //GoogleClientSecrets.Load(stream).Secrets, // This OAuth 2.0 access scope allows for read-only access to the authenticated // user's account, but not other types of account access. new[] { GmailService.Scope.GmailReadonly, GmailService.Scope.MailGoogleCom, GmailService.Scope.GmailModify }, "user", CancellationToken.None, new FileDataStore(folder) );

但是当我发布它并尝试从iis运行时,我得到了:

  

[System.AggregateException:发生了一个或多个错误。 ---> System.Net.HttpListenerException:在Google.Apis.Auth的Google.Apis.Auth.OAuth2.LocalServerCodeReceiver.StartListener()上的System.Net.HttpListener.Start()处的System.Net.HttpListener.AddAllPrefixes()处拒绝访问。 OAuth2.LocalServerCodeReceiver.d__8.MoveNext()---从抛出异常的先前位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification的System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处(任务任务)在Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext()---从抛出异常的上一个位置的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务) )在Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext()的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中 - 从抛出异常的上一个位置开始的堆栈跟踪结束---在系统中。 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)中的Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务),位于Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.MoveNext()---内部异常堆栈跟踪结束---在C:\ Users \ Administrator \ Desktop \ DataOtomasyon \ DataOtomasyon \ Helpers \ gmailApi.cs中的DataOtomasyon.Helpers.gmailApi.d__2.MoveNext()处的System.Threading.Tasks.Task`1.GetResultCore(布尔值waitCompletionNotification) :第58行---> (内部异常#0)System.Net.HttpListenerException(0x80004005):在Google.Apis.Auth.OAuth2.LocalServerCodeReceiver.StartListener的System.Net.HttpListener.Start()处的System.Net.HttpListener.AddAllPrefixes()处拒绝访问()at Google.Apis.Auth.OAuth2.LocalServerCodeReceiver.d__8.MoveNext()---从抛出异常的上一个位置开始的堆栈跟踪结束---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)at Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext()中的System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)---抛出异常的前一个位置的堆栈跟踪结束---在System.Runtime位于System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)的.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务),位于Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext()---来自先前位置的堆栈跟踪结束其中e xception被抛出---在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)处,位于Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.MoveNext( < ---]

我检查了所有可用iis用户的权限,并授予他们所有人的读/写权限我真的很困惑,任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

 credential = GoogleWebAuthorizationBroker.AuthorizeAsync(
                GoogleClientSecrets.Load(stream).Secrets,
                Scopes,
                "user",
                CancellationToken.None,
                new FileDataStore(credPath, true),
                new PromptCodeReceiver()).Result;

这可能是很久以前的问题,但我遇到了同样的问题,解决它的问题是使用PromptCodeReceiver而不是设置代码接收器参数。事实证明,当未定义代码接收器时,GoogleWebAuthorizationBroker默认使用LocalServerCodeReceiver。