我有两个Azure WebJobs。第一个消息传入一条消息,告诉它抓取PDF并将其分解为单独的页面图像,然后为第二个WebJob处理单个页面排队另一条消息。它在我们的QC实例中运行良好,但是当我们尝试转向生产时,我开始在第二份工作上出现奇怪的错误,但并不一致。第一份作业运行并将文件分解成页面图像。这工作正常。我已确认每个页面图像都已创建,并且每个页面消息都已排队。但是,对于第二份工作,只有部分消息得到正确处理。其余的节目出现此错误WebJob诊断:Azure WebJob DB连接错误仅在某些情况下
Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Microsoft.Azure.WebJobs.Host.FunctionInvocationException: Exception while executing function: Functions.ProcessBatchPage ---> System.Data.SqlClient.SqlException: A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 52 - Unable to locate a Local Database Runtime installation. Verify that SQL Server Express is properly installed and that the Local Database Runtime feature is enabled.) ---> System.ComponentModel.Win32Exception: The system cannot find the file specified
但是,什么是奇怪的是,这个错误中提到的本地数据库运行时和SQL Server Express,我无论是在我的代码的任何地方没有引用。系统指向Azure SQL数据库。作业是ADO.Net,并且我已经对连接字符串进行了硬编码,以尝试消除基于配置的连接字符串的任何问题。但奇怪的是,它只发生在消息的某个部分。其他处理完美。
最后,我在本地调试运行作业(仍然指向Azure上的真实队列和数据库)并得到同样的问题。但作业会输出一个控制台行,并将作业ID作为代码的第一行。对于那些成功处理的工作,我看到这条记录。对于那些失败的人,我从未看到任何东西。这几乎就像工作并没有真正开始。 (失败的作业也有一个非常短的运行时间50-100ms)
你能发布这类部署到Azure中的app.config?如果你使用EF,你可以发布你如何设置连接字符串吗? – lopezbertoni
根本不使用EF。我在网页作业中遇到了EF的麻烦,所以我只是直接用ADO.net重写了它。它具有带硬编码连接字符串的SQLConnection语句。以前我在app.config中有CS,但是在webjob functions.cs中用硬编码来试图消除这个问题。 –