Azure webjobs失败[访问被拒绝]

时间:2017-01-03 07:15:55

标签: c# console-application gmail-api azure-webjobs

我创建了一个控制台应用程序来读取gmail收件箱。我需要我的控制台应用程序每15分钟读取一次电子邮件。所以我使用runmode将“控制台应用程序”发布为webjobs:“On demand”并使用azure services(web apps)发布应用程序)。

但我的webjobs似乎没有运行,当我选择发布为azure webjobs时,没有选项安排webjob。

我发布后立即在visual studio中收到此错误:

'ICICIEmailParser.sstageEntities-Web.config Connection String' argument cannot be null or empty

webjob没有预定的时间,所以我从azure portal手动运行webjob,当查看日志时我看到下面的错误

  

[01/03/2017 06:48:38> 7e6d88:SYS INFO]状态已更改为正在初始化   [01/03/2017 06:48:38> 7e6d88:SYS INFO]检测到作业目录更改:作业文件'ICICIEmailParser.application'时间戳在源目录和工作目录之间不同。   [01/03/2017 06:48:39> 7e6d88:SYS INFO]使用脚本主机运行脚本'ICICIEmailParser.exe' - 'WindowsScriptHost'   [01/03/2017 06:48:39> 7e6d88:SYS INFO]状态已更改为正在运行   [01/03/2017 06:48:40> 7e6d88:ERR]   [01/03/2017 06:48:40> 7e6d88:ERR]未处理的异常:System.AggregateException:发生了一个或多个错误。 ---> System.AggregateException:发生一个或多个错误。 ---> System.Net.HttpListenerException:拒绝访问   [01/03/2017 06:48:40> System.Net.HttpListener.SetupV2Config()中的7e6d88:ERR]   [01/03/2017 06:48:40> System.Net.HttpListener.Start()中的7e6d88:ERR]   [01/03/2017 06:48:40> 7e6d88:ERR]在Google.Apis.Auth.OAuth2.LocalServerCodeReceiver.d__6.MoveNext()   [01/03/2017 06:48:40> 7e6d88:ERR] ---从抛出异常的先前位置开始的堆栈跟踪结束---   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)   [01/03/2017 06:48:40> 7e6d88:ERR]在Google.Apis.Auth.OAuth2.AuthorizationCodeInstalledApp.d__8.MoveNext()   [01/03/2017 06:48:40> 7e6d88:ERR] ---从抛出异常的先前位置开始的堆栈跟踪结束---   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)   [01/03/2017 06:48:40> 7e6d88:ERR]在Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__4.MoveNext()   [01/03/2017 06:48:40> 7e6d88:ERR] ---从抛出异常的先前位置开始的堆栈跟踪结束---   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)   [01/03/2017 06:48:40> 7e6d88:ERR]在Google.Apis.Auth.OAuth2.GoogleWebAuthorizationBroker.d__1.MoveNext()   [01/03/2017 06:48:40> 7e6d88:ERR] ---内部异常堆栈跟踪结束---   [01/03/2017 06:48:40> System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)中的7e6d88:ERR]   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Threading.Tasks.Task 1.GetResultCore(Boolean waitCompletionNotification) [01/03/2017 06:48:40 > 7e6d88: ERR ] at System.Threading.Tasks.Task 1.get_Result()   [01/03/2017 06:48:40> 7e6d88:ERR]在GmailQuickstart.Program.d__3.MoveNext()   [01/03/2017 06:48:40> 7e6d88:ERR] ---内部异常堆栈跟踪结束---   [01/03/2017 06:48:40> 7e6d88:ERR]在System.Threading.Tasks.Task.WaitAll(Task []任务,Int32 millisecondsTimeout,CancellationToken cancellationToken)   [01/03/2017 06:48:40> 7e6d88:ERR]在GmailQuickstart.Program.Main(String [] args)   [01/03/2017 06:48:40> 7e6d88:SYS INFO]状态已更改为Failed   [01/03/2017 06:48:40> 7e6d88:SYS ERR]由于退出代码-532462766

导致作业失败

我做过的事情:

我有一个google oauth的client-secret.json文件。 我在我的azure web app身份验证/授权中添加了google secret和client id 我在google开发者控制台中设置了javascript origin并重定向uri

这是我的主要方法:

static void Main(string[] args)
    {

        Task.WaitAll(GetEmail());


    }
static async Task GetEmail() {
//my c# code to read gmail inbox...

}

任何帮助将不胜感激!

提前致谢

1 个答案:

答案 0 :(得分:0)

  

未处理的异常:System.AggregateException:发生了一个或多个错误。 ---> System.Net.HttpListenerException:访问被拒绝

根据您的说明,我假设您已按照.NET Quickstart创建了向Gmail API发出请求的.NET控制台应用程序。我按照上面的教程并将其部署为Azure WebJobs,然后我可以重现此错误。在Azure上运行命令行应用程序(WebJob)时,它会提示您授权访问并在Web服务器的默认浏览器中打开新窗口或选项卡。但是,Azure WebJobs作为后台任务在Azure上托管的网站后面进行常规作业和批处理工作,最终用户无法与您的WebJob交互以完成授权。

  

但我的webjobs似乎没有运行,当我选择发布为azure webjobs时,没有选项安排webjob。

众所周知,您可以利用以下方法来安排WebJob:

  

我在我的azure web app认证/授权中添加了google secret和client id我设置了javascript origin并在google开发者控制台中重定向uri

根据我的理解,您正在尝试使用Google帐户对您的网络应用进行身份验证/授权,并安排WebJob使用已记录的UserCredential从Gmail中读取邮件。据我所知,WebJobs无法直接与您的网络应用程序通信,我认为您需要存储已记录的UserCredential并安排您的webjob检索UserCredential以从Gmail API读取消息。

相关问题