c# - 运行 Web 作业在启动时会出现 ArgumentNullException
问题描述
我正在使用 .NET Framework 开发 Azure webjob,但是当我在本地运行时,启动后出现此异常。
Microsoft.Azure.WebJobs.Host.Listeners.FunctionListenerException
:函数的监听器[Name of function]
无法启动。内部异常:
ArgumentNullException
: 值不能为空。
参数名称:connectionString
这是Program
网络作业类中的代码。
static void Main()
{
HostBuilder builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddTimers();
});
using (IHost host = builder.Build())
{
host.Run(); // <-- error happens on this line
}
}
在里面App.config
我添加了接下来的两个连接字符串:
<add name="AzureWebJobsDashboard" connectionString="DefaultEndpointsProtocol=https;AccountName=[Name];AccountKey=[Key]" />
<add name="AzureWebJobsStorage" connectionString="DefaultEndpointsProtocol=https;AccountName=[Name];AccountKey=[Key]" />
使用[Name]
和[Key]
作为来自实时环境的帐户名称和密钥。
此外,当我将连接字符串更改为 时UseDevelopmentStorage=true
,我也遇到了同样的异常。
我怎么能解决这个问题?
解决方案
更新:
如果将 3.x 版的 Azure WebJobs SDK 与 .NET Framework 一起使用,则会出现问题:3.x 版与 .NET Framework 和 .NET 不兼容PackageReference
。
所以有几种解决方法:
直接使用Visual Studio 中的 Azure WebJobs 模板,它基于
.net framework
.您可以将
appsettings.json
文件(注意:右键单击文件→选择属性→然后将“复制到输出目录”设置为“如果较新则复制”)到.NET Framework项目,它将工作(基于1,它会抛出错误,但它可以工作)。JSON 文件如下所示:{ "AzureWebJobsStorage": "{storage connection string}" }
最好的解决方案是将 .NET Core 与 3.x 版的 WebJobs SDK 结合使用。
原答案:
如果您使用的是 WebJob SDK 版本 3.x,我建议您应该创建一个.NET Core 控制台项目而不是.NET Framework 控制台项目,那么您应该遵循这个官方文档。
首先,创建一个.NET Core 控制台应用程序。并安装官方文档中提到的所有必要的包。
你的程序.cs:
static void Main()
{
HostBuilder builder = new HostBuilder();
builder.ConfigureWebJobs(b =>
{
b.AddAzureStorageCoreServices();
b.AddAzureStorage();
b.AddTimers();
});
using (IHost host = builder.Build())
{
host.Run();
}
}
然后创建一个函数,请参考本节。
然后添加一个appsettings.json
文件(注意:右键单击文件→选择属性→然后将“复制到输出目录”设置为“如果较新则复制”),在AzureWebJobsStorage
其中添加:
{
"AzureWebJobsStorage": "{storage connection string}"
}
如果您对此还有更多问题,请告诉我。
推荐阅读
- ios - UIview.hidden 不会消失,而是隐藏在另一个视图后面
- php - 以一种形式编辑用户和关系 Symfony 4
- python - IndentationError 和其他错误
- xamarin - XAML 中的 Xamarin 本机视图未在 IOS 上显示
- bash - 从 hexdump 输出中删除第一列
- android - 从 ViewPager 中删除图像
- javascript - 在 JavaScript 中打印对象数组
- android - shouldShowRequestPermissionRationale 总是返回 false
- python - 在excel文件中搜索模式并获取行ID python
- scala - spark kafka消费者的获取不一致