NServiceBus SqlServerTransport with . net 6 Worker服务问题



我正在尝试使用NServiceBus 7.7.3及其SqlServerTransport与。net 6 worker服务。SqlServerTransport使用NServiceBus.Transport.SqlServer6.3.3和Microsoft.Data.SqlClient4.1.0库。

当NServiceBus发布版本7时。x,它发布了一个关于SqlServerTransport和a的配置更改的说明使用NServiceBus和.NET worker服务的代码示例,我遵循它创建了以下代码:

IHost host = Host.CreateDefaultBuilder(args)
.UseWindowsService()
.UseNServiceBus(context =>
{
var endpointConfiguration = new EndpointConfiguration("CRM");
string connectionString = configuration.GetValue<string>("ConnectionStrings:CrmDatabase");
SqlServerTransport transport = new SqlServerTransport(connectionString);
endpointConfiguration.UseTransport(transport);
//code for routing, defining critical error actions, etc.
return endpointConfiguration;
})
.ConfigureServices(services =>
{
services.AddHostedService<GALSync.InterAction.Processes.CrmListener.Worker>();
})
.UseSerilog()
.Build();
await host.RunAsync();
}

在语句上SqlServerTransport transport = new SqlServerTransport(connectionString);实例化new SqlServerTransport引发错误"SqlServerTransport不包含接受1个参数的构造函数"。

语句endpointConfiguration.UseTransport(transport);抛出错误"参数2:不能从'NServiceBus转换。SqlServerTransport' to 'System.Type'">

我将NServiceBusNServiceBus.Transport.SqlServer库更新到8.0.0-beta。3和7.0.0-beta 2,认为NServiceBus可能在。net 6中存在问题。库更新删除了这两个错误,但在运行时,代码引发了"必须在SQL Server传输配置中指定连接字符串或连接工厂";错误。SQL连接字符串经过测试,并且确实连接到SQL服务器,允许所有SQL功能完美运行。

我返回到当前的生产库,并尝试了一个旧的代码配置,这将被弃用:

endpointConfiguration.UseTransport<SqlServerTransport>().ConnectionString(connectionString);

与beta库一样,它没有构造函数错误,并且在运行时引发连接字符串未指定错误。

这可能是使用。net 6与NServiceBus的错误,但我也可能错过了一些东西。如果能帮助NServiceBusSqlServerTransport与。net 6 worker服务一起工作,我将不胜感激。

我已经在。net 6上得到了这个确切的场景。我用的是"被弃用"版的

var transport = endpointConfiguration.UseTransport<SqlServerTransport>();
transport.ConnectionString(connectionString);

…除此之外,我们都差不多。我确实看了SqlServerTransport的构造函数,确实,只有带两个参数的构造函数。看看这两种方法是否适合你。这个回答的主要目的是确认它确实可以与NET6一起工作

最新更新