出现以下错误:
内部异常:"对象引用未设置为对象的实例。" 堆栈跟踪: at System.Transactions.Transaction.GetPromotedToken()
即使我在下面的代码中将enlist=false设置在连接字符串中,该错误仍来自于connection.EnlistTransaction(Transaction.Current)这一行。
`internal T UseTransaction<T>([InstantHandle] Func<DbConnection, DbTransaction, T> func, IsolationLevel? isolationLevel)
{
#if NETFULL
using (var transaction = CreateTransaction(isolationLevel ?? _options.TransactionIsolationLevel))
{
var result = UseConnection(connection =>
{
connection.EnlistTransaction(Transaction.Current);
return func(connection, null);
});
transaction.Complete();
return result;
}
}`
当我们设置enlist=true时,下面代码中的connection.Open()会出现错误。
internal DbConnection CreateAndOpenConnection()
{
if (_existingConnection != null)
{
return _existingConnection;
}
var connection = new SqlConnection(_connectionString);
connection.Open();
return connection;
}
这两种方法都在Hangfire.SqlServer.SqlServerStorage类下面。
当连接到本地数据库(SQL Server 2014)时,相同的代码可以工作。
在讨论WCF事务针对Azure SQL DB中,不确定是否与此问题相关。
编辑:
HangFire配置
GlobalConfiguration.Configuration.UseSqlServerStorage(
Database.ConnectionString,
new SqlServerStorageOptions
{
QueuePollInterval = TimeSpan.FromSeconds(10),
PrepareSchemaIfNecessary = true
});
任务排队
BackgroundJob.Enqueue(() => Update(connectionToken, intFileUniqueId));
Please help. Thanks in advance.