Skip to content

SqlAuthenticationParameters.ConnectionTimeout throws MissingMethodException #1335

@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

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions