我创建了一个控制台应用程序来读取gmail收件箱。我需要我的控制台应用程序每15分钟阅读一次电子邮件。因此,我将控制台应用程序发布为运行模式为"按需"的网络作业,并使用azure服务(网络应用程序)发布该应用程序。
但我的网络作业似乎没有运行,当我选择发布为azure网络作业时,也没有安排网络作业的选项。
我一发布就在visual studio中收到这个错误:
'ICICIEmailParser.sstageEntities-Web.config Connection String' argument cannot be null or empty
网络作业没有计划的时间,所以我从azure门户手动运行网络作业,当查看日志时,我看到下面的错误
[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]使用脚本主机-"WindowsScriptHost"运行脚本"ICICIEmailParser.exe"[01/03/2017 06:48:39>7e6d88:SYS INFO]状态更改为正在运行【2017年3月1日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>7e6d88:ERR],位于System.Net.HttpListener.SetupV2Config()[01/03/2017 06:48:40>7e6d88:ERR],位于System.Net.HttpListener.Start()[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>7e6d88:ERR]在System.Threading.Tasks.Task.SthrowIfExceptional(布尔值包括TaskCanceledExceptions)[01/03/2017 06:48:40>7e6d88:ERR],位于System.Threading.Task.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毫秒超时,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/2017 06:48:40>7e6d88:SYS ERR]由于退出代码-532462766 ,作业失败
我所做的事情:
我有一个谷歌oauth的client-securt.json文件。我已经在我的azure web应用程序身份验证/授权中添加了谷歌秘密和客户端id我在谷歌开发者控制台中设置了javascript来源和重定向uri
这是我的主要方法:
static void Main(string[] args)
{
Task.WaitAll(GetEmail());
}
static async Task GetEmail() {
//my c# code to read gmail inbox...
}
任何帮助都将不胜感激!
提前感谢
未处理的异常:系统。AggregateException:出现一个或多个错误。--->系统网HttpListenerException:访问被拒绝
根据你的描述,我认为你已经跟上了。NET Quickstart创建您的。NET控制台应用程序,向Gmail API发出请求。我遵循了上面的教程,并将其部署为Azure WebJobs,然后我可以重现这个错误。在Azure上运行命令行应用程序(WebJob)时,它会提示您授权访问,并在web服务器的默认浏览器中打开新窗口或选项卡。然而,Azure WebJob作为后台任务在Azure上托管的网站下进行常规工作和批处理工作,最终用户无法与您的WebJob交互以完成授权。
但我的网络作业似乎没有运行,当我选择发布为azure网络作业时,也没有计划网络作业的选项。
正如我所知,您可以利用以下方法来安排您的WebJob:
-
使用Azure WebJobs SDK扩展中的
TimerTrigger
-
使用Azure计划程序作业通过一些计划触发您的WebJob
-
使用cron表达式调度Azure WebJobs
我在我的azure web应用程序身份验证/授权中添加了谷歌机密和客户端id我在谷歌开发者控制台中设置了javascript来源和重定向uri
据我所知,您正试图使用谷歌帐户验证/授权您的网络应用程序,并安排WebJob使用记录的UserCredential从Gmail读取消息。正如我所知,WebJobs无法直接与您的网络应用程序通信,我假设您需要存储记录的UserCredential,并安排您的网络作业检索UserCredentity以从Gmail API读取消息。