Skip to content

SqlAuthenticationParameters.ConnectionTimeout throws MissingMethodException #1335

Closed
@smichtch

Description

@smichtch

Describe the bug

SqlAuthenticationParameters.ConnectionTimeout throws MissingMethodException

System.MissingMethodException: Method not found: 'Int32 Microsoft.Data.SqlClient.SqlAuthenticationParameters.get_ConnectionTimeout()'.
   at Microsoft.Data.ProviderBase.DbConnectionPool.CheckPoolBlockingPeriod(Exception e)
   at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
   at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
   at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
   at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry, SqlConnectionOverrides overrides)
   at Microsoft.Data.SqlClient.SqlConnection.Open(SqlConnectionOverrides overrides)
   at Microsoft.Data.SqlClient.SqlConnection.Open()
   at DatabaseTestController.TestSqlConnection(Action`1 customize)

To reproduce

Reproduces by accessing ConnectionTimeout from a custom SqlAuthenticationProvider:

class MyCustomSqlAuthenticationProvider : SqlAuthenticationProvider
{
    public override async Task<SqlAuthenticationToken> AcquireTokenAsync(SqlAuthenticationParameters parameters)
    {
        // System.MissingMethodException thrown here
        var connectionTimeout = parameters.ConnectionTimeout;
        ...
    }
    ...
}

Expected behavior

SqlAuthenticationParameters.ConnectionTimeout returns an integer value.

Further technical details

Microsoft.Data.SqlClient version: 3.0.1
.NET target: netcoreapp3.1 and net472
SQL Server version: N/A
Operating system: Windows 10 Enterprise Build 19043

Additional context
It looks like SqlAuthenticationParameters.ConnectionTimeout is implemented a a field

public int ConnectionTimeout = ADP.DefaultConnectionTimeout;

but in the ref assemblies it's a property:

public int ConnectionTimeout { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }

public int ConnectionTimeout { [System.Runtime.CompilerServices.CompilerGeneratedAttribute]get { throw null; } }

Seems like it might just be a typo (i.e. impl missing a { get; }) but since SqlAuthenticationParameters is marked partial maybe I'm not seeing some generated code.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Bug! 🐛Issues that are bugs in the drivers we maintain.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions