Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Hangfire on Azure SQL

I just published an Azure Website using an Azure SQL.

However, I get the error

An existing connection was forcibly closed by the remote host

when reaching the website, with the callback related to Hangfire:

[Win32Exception (0x80004005): An existing connection was forcibly closed by the remote host]

[SqlException (0x80131904): A transport-level error has occurred when receiving results from the server. (provider: TCP Provider, error: 0 - An existing connection was forcibly closed by the remote host.)]
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, DbConnectionPool pool, String accessToken, Boolean applyTransientFaultHandling) +830
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +329
   System.Data.ProviderBase.DbConnectionFactory.CreateNonPooledConnection(DbConnection owningConnection, DbConnectionPoolGroup poolGroup, DbConnectionOptions userOptions) +38
   System.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection) +507
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +154
   System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +21
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +90
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +217
   System.Data.SqlClient.SqlConnection.Open() +96
   Hangfire.SqlServer.SqlServerStorage.CreateAndOpenConnection() +49
   Hangfire.SqlServer.SqlServerStorage.UseConnection(Func`2 func) +41
   Hangfire.SqlServer.SqlServerStorage.UseTransaction(Func`2 func, Nullable`1 isolationLevel) +84
   Hangfire.SqlServer.SqlServerStorage.UseTransaction(Action`1 action) +73
   Hangfire.SqlServer.SqlServerWriteOnlyTransaction.Commit() +47
   Hangfire.RecurringJobManager.AddOrUpdate(String recurringJobId, Job job, String cronExpression, TimeZoneInfo timeZone, String queue) +277

Any idea?

like image 529
Dekim Avatar asked May 15 '16 18:05

Dekim


1 Answers

I had exactly the same problem. If you, like me, copied the connection string from Azure Portal database settings page, try removing Pooling=False;. This fixed the issue for me.

Sorry, I don't have a good explanation of why this was causing Hangfire to fail. But normally, you would want to have connection pooling enabled anyway.

like image 162
M1Les Avatar answered Nov 14 '22 08:11

M1Les