我的天蓝色webjob似乎正在终止而没有引发异常,我迷路了。
我的Web作业按需运行(或按计划运行),并且依赖于我的网站DLL(和MVC应用程序)。它调用它来完成大部分工作,其中包括使用实体框架数据库以及对其他几个站点进行REST调用。大多数工作是异步完成的。从网站的其他部分也可以毫无问题地调用用于执行此工作的大多数代码,并且不用说,在本地运行时,Web作业可以完美地工作。
该Web作业终止并且似乎没有引发异常,并且似乎不可能调试不是连续运行的Web(?)。因此,我的调试主要是通过Console.WriteLine进行的。由于这个原因和异步性,我无法准确确定崩溃的位置-我以为是在访问数据库时发生的,但是经过处理之后,数据库访问才开始起作用。我的下一个最佳猜测是它在等待或其他异步管道中死亡。但是,它的确会在两个try / catch块中崩溃,最终导致将结果记录到Redis和Azure存储中。这些都没有发生。我无法弄清楚或想像不到没有任何异常处理程序,此过程将如何崩溃。
有人遇到过天蓝色的webjob这个问题吗?任何想法,我应该寻找什么或调试此技巧?
谢谢!
我想到了!异步发生的许多事情之一是证书的创建。我将其归结为:
signedCert = new X509Certificate2(cert, "notasecret", X509KeyStorageFlags.Exportable);
当从我的azure网站或测试中调用该代码时,它工作正常,但可以完全杀死webjob进程而不会引发异常!例如,以下异常处理程序中的WriteLine永远不会被调用:
X509Certificate2 signedCert;
try
{
signedCert = new X509Certificate2(cert, "notasecret", X509KeyStorageFlags.Exportable);
}
catch (Exception ex)
{
// We never get here! Argh!
Console.WriteLine("Exception converting cert: " + ex);
throw;
}
非常耗时且令人沮丧。与诊断不同,修复很简单:
signedCert = new X509Certificate2(
cert,
"notasecret",
X509KeyStorageFlags.Exportable |
X509KeyStorageFlags.MachineKeySet |
X509KeyStorageFlags.PersistKeySet);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句