简体   繁体   English

如何实现ASP.NET标识:数据库“master”中的CREATE DATABASE权限被拒绝

[英]How to implement ASP.NET identity: CREATE DATABASE permission denied in database 'master'

First of all, I already checked here: ASP.Net Identity how to set target DB? 首先,我已经在这里查了一下: ASP.Net Identity如何设置目标DB?

I'm now getting this error 我现在收到这个错误

CREATE DATABASE permission denied in database 'master'. 数据库“master”中的CREATE DATABASE权限被拒绝。

On this line of code: 在这行代码上:

Dim user As User = manager.Find(Trim(Username.Text), Trim(Password.Text))

Full error: 完整错误:

[SqlException (0x80131904): CREATE DATABASE permission denied in database 'master'.] [SqlException(0x80131904):数据库'master'中的CREATE DATABASE权限被拒绝。
System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection, Action 1 wrapCloseInAction) +3249852
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +345
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4927
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) +1287
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
System.Data.SqlClient.SqlConnection.OnError(SqlException异常,Boolean breakConnection,Action 1 wrapCloseInAction) +3249852
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +345
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4927
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) +1287
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 wrapCloseInAction) +3249852
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +345
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4927
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) +1287
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 wrapCloseInAction) +3249852
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +345
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4927
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) +1287
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 completion, String methodName, Boolean sendToPipe, Int32 timeout, Boolean asyncWrite) +367
1 wrapCloseInAction) +3249852
System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +345
System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4927
System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async, Int32 timeout, Boolean asyncWrite) +1287
System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(TaskCompletionSource
1 completion,String methodName,Boolean sendToPipe,Int32 timeout,Boolean asyncWrite)+367

System.Data.SqlClient.SqlCommand.ExecuteNonQuery() +386 System.Data.SqlClient.SqlCommand.ExecuteNonQuery()+386
System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch(TTarget target, Func 3 operation, TInterceptionContext interceptionContext, Action 3 executing, Action 3 executed) +965 System.Data.Entity.Infrastructure.Interception.InternalDispatcher 1.Dispatch(TTarget target, Func 3操作,TInterceptionContext interceptionContext,Action 3 executing, Action 3执行)+965
System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand command, DbCommandInterceptionContext interceptionContext) +505 System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.NonQuery(DbCommand命令,DbCommandInterceptionContext interceptionContext)+505
System.Data.Entity.SqlServer.<>c__DisplayClass1a.b__19(DbConnection conn) +136 System.Data.Entity.SqlServer。<> c__DisplayClass1a.b__19(DbConnection conn)+136
System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection, Action 1 act) +347
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action
System.Data.Entity.SqlServer.SqlProviderServices.UsingConnection(DbConnection sqlConnection,Action 1 act) +347
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action
1 act) +347
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action
1 act) +347
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action
1 act) +916
1 act) +347
System.Data.Entity.SqlServer.SqlProviderServices.UsingMasterConnection(DbConnection sqlConnection, Action
1 act)+916

System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable 1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +117
System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable
System.Data.Entity.SqlServer.SqlProviderServices.CreateDatabaseFromScript(Nullable 1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +117
System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable
1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +117
System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable
1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +117
System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable
1 commandTimeout, StoreItemCollection storeItemCollection) +212
1 commandTimeout, DbConnection sqlConnection, String createDatabaseScript) +117
System.Data.Entity.SqlServer.SqlProviderServices.DbCreateDatabase(DbConnection connection, Nullable
1 commandTimeout,StoreItemCollection storeItemCollection)+212

System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection connection) +172 System.Data.Entity.Migrations.Utilities.DatabaseCreator.Create(DbConnection连接)+172
System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase) +175 System.Data.Entity.Migrations.DbMigrator.EnsureDatabaseExists(Action mustSucceedToKeepDatabase)+175
System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration) +116 System.Data.Entity.Migrations.DbMigrator.Update(String targetMigration)+116
System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext, Func 3 createMigrator, ObjectContext objectContext) +121
System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +169
System.Data.Entity.CreateDatabaseIfNotExists
System.Data.Entity.Internal.DatabaseCreator.CreateDatabase(InternalContext internalContext,Func 3 createMigrator, ObjectContext objectContext) +121
System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +169
System.Data.Entity.CreateDatabaseIfNotExists
3 createMigrator, ObjectContext objectContext) +121
System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +169
System.Data.Entity.CreateDatabaseIfNotExists
3 createMigrator, ObjectContext objectContext) +121
System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +169
System.Data.Entity.CreateDatabaseIfNotExists
1.InitializeDatabase(TContext context) +257
3 createMigrator, ObjectContext objectContext) +121
System.Data.Entity.Database.Create(DatabaseExistenceState existenceState) +169
System.Data.Entity.CreateDatabaseIfNotExists
1.InitializeDatabase(TContext context)+257

System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action) +72 System.Data.Entity.Internal.InternalContext.PerformInitializationAction(Action action)+72
System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization() +483 System.Data.Entity.Internal.InternalContext.PerformDatabaseInitialization()+483
System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) +177
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
System.Data.Entity.Internal.RetryAction 1.PerformAction(TInput input) +177
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1.PerformAction(TInput input) +177
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1.PerformAction(TInput input) +177
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1 action) +274
1.PerformAction(TInput input) +177
System.Data.Entity.Internal.LazyInternalContext.InitializeDatabaseAction(Action
1 action)+274

System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType) +37 System.Data.Entity.Internal.InternalContext.GetEntitySetAndBaseTypeForType(Type entityType)+37
System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +76
System.Data.Entity.Internal.Linq.InternalSet
System.Data.Entity.Internal.Linq.InternalSet 1.Initialize() +76
System.Data.Entity.Internal.Linq.InternalSet
1.Initialize() +76
System.Data.Entity.Internal.Linq.InternalSet
1.Initialize() +76
System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext() +21
1.Initialize() +76
System.Data.Entity.Internal.Linq.InternalSet
1.get_InternalContext()+ 21

System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() +59
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
System.Data.Entity.Infrastructure.DbQuery 1.System.Linq.IQueryable.get_Provider() +59
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1.System.Linq.IQueryable.get_Provider() +59
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1.System.Linq.IQueryable.get_Provider() +59
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 source, Expression 1 predicate, CancellationToken cancellationToken) +208
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1.System.Linq.IQueryable.get_Provider() +59
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 source,Expression 1 predicate, CancellationToken cancellationToken) +208
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 predicate, CancellationToken cancellationToken) +208
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 predicate, CancellationToken cancellationToken) +208
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 source, Expression`1 predicate) +172
1 predicate, CancellationToken cancellationToken) +208
System.Data.Entity.QueryableExtensions.FirstOrDefaultAsync(IQueryable
1 source,Expression`1谓词)+172

Microsoft.AspNet.Identity.EntityFramework.d__6c.MoveNext() +502 Microsoft.AspNet.Identity.EntityFramework.d__6c.MoveNext()+502
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13855856 System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(任务任务)+13855856
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61 System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(任务任务)+61
Microsoft.AspNet.Identity.CultureAwaiter 1.GetResult() +48
Microsoft.AspNet.Identity.<FindAsync>d__12.MoveNext() +357
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13855856
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61
Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func
Microsoft.AspNet.Identity.CultureAwaiter 1.GetResult() +48
Microsoft.AspNet.Identity.<FindAsync>d__12.MoveNext() +357
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13855856
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61
Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func
1.GetResult() +48
Microsoft.AspNet.Identity.<FindAsync>d__12.MoveNext() +357
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13855856
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61
Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func
1.GetResult() +48
Microsoft.AspNet.Identity.<FindAsync>d__12.MoveNext() +357
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13855856
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61
Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func
1 func) +348
1.GetResult() +48
Microsoft.AspNet.Identity.<FindAsync>d__12.MoveNext() +357
System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task) +13855856
System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task) +61
Microsoft.AspNet.Identity.AsyncHelper.RunSync(Func
1 func)+348

MyApp.Login_identity.UserLogin_Click(Object sender, EventArgs e) in C:\\MyApp\\Login_identity.aspx.vb:168 C:\\ MyApp \\ Login_identity.aspx.vb中的MyApp.Login_identity.UserLogin_Click(Object sender,EventArgs e):168
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +11747645 System.Web.UI.WebControls.Button.OnClick(EventArgs e)+11747645
System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument) +150 System.Web.UI.WebControls.Button.RaisePostBackEvent(String eventArgument)+150
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +3360 System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint,Boolean includeStagesAfterAsyncPoint)+3360

I changed the DbContext initialization in AppModel.vb to my existing connection string conn1 , which points to the SQL Server database I already converted to the new identity tables. 我将AppModel.vbDbContext初始化更改为现有的连接字符串conn1 ,该字符串指向已转换为新标识表的SQL Server数据库。

My connection string: 我的连接字符串:

<add name="conn1" 
     connectionString="data source=(local)\sqlexpress;Initial Catalog=myapp;User Id=sa;Password=XXXX;" 
     providerName="System.Data.SqlClient" />

AppModel.vb : AppModel.vb

Imports Microsoft.AspNet.Identity
Imports Microsoft.AspNet.Identity.EntityFramework
Imports System.Collections.Generic
Imports System.ComponentModel.DataAnnotations
Imports System.Data.Entity
Imports System.Linq
Imports System.Web

Namespace AspnetIdentitySample.Models
    Public Class ApplicationUser
        Inherits IdentityUser
        ' HomeTown will be stored in the same table as Users
        Public Property HomeTown() As String
            Get
                Return m_HomeTown
            End Get
            Set(value As String)
                m_HomeTown = Value
            End Set
        End Property
        Private m_HomeTown As String
        Public Overridable Property ToDoes() As ICollection(Of ToDo)
            Get
                Return m_ToDoes
            End Get
            Set(value As ICollection(Of ToDo))
                m_ToDoes = Value
            End Set
        End Property
        Private m_ToDoes As ICollection(Of ToDo) 

        ' FirstName & LastName will be stored in a different table called MyUserInfo
        Public Overridable Property MyUserInfo() As MyUserInfo
            Get
                Return m_MyUserInfo
            End Get
            Set(value As MyUserInfo)
                m_MyUserInfo = Value
            End Set
        End Property
        Private m_MyUserInfo As MyUserInfo 
    End Class

    Public Class MyUserInfo
        Public Property Id() As Integer
            Get
                Return m_Id
            End Get
            Set(value As Integer)
                m_Id = Value
            End Set
        End Property
        Private m_Id As Integer
        Public Property FirstName() As String
            Get
                Return m_FirstName
            End Get
            Set(value As String)
                m_FirstName = Value
            End Set
        End Property
        Private m_FirstName As String
        Public Property LastName() As String
            Get
                Return m_LastName
            End Get
            Set(value As String)
                m_LastName = Value
            End Set
        End Property
        Private m_LastName As String
    End Class

    Public Class ToDo
        Public Property Id() As Integer
            Get
                Return m_Id
            End Get
            Set(value As Integer)
                m_Id = Value
            End Set
        End Property
        Private m_Id As Integer
        Public Property Description() As String
            Get
                Return m_Description
            End Get
            Set(value As String)
                m_Description = Value
            End Set
        End Property
        Private m_Description As String
        Public Property IsDone() As Boolean
            Get
                Return m_IsDone
            End Get
            Set(value As Boolean)
                m_IsDone = Value
            End Set
        End Property
        Private m_IsDone As Boolean
        Public Overridable Property User() As ApplicationUser
            Get
                Return m_User
            End Get
            Set(value As ApplicationUser)
                m_User = Value
            End Set
        End Property
        Private m_User As ApplicationUser 
    End Class
    Public Class MyDbContext
        Inherits IdentityDbContext(Of ApplicationUser)
        Public Sub New()
            MyBase.New("conn1") 'DefaultConnection
        End Sub

        Protected Overrides Sub OnModelCreating(modelBuilder As DbModelBuilder)
            MyBase.OnModelCreating(modelBuilder)

            ' Change the name of the table to be Users instead of AspNetUsers
            modelBuilder.Entity(Of IdentityUser)().ToTable("Users")
            modelBuilder.Entity(Of ApplicationUser)().ToTable("Users")
        End Sub

        Public Property ToDoes() As DbSet(Of ToDo)
            Get
                Return m_ToDoes
            End Get
            Set(value As DbSet(Of ToDo))
                m_ToDoes = Value
            End Set
        End Property
        Private m_ToDoes As DbSet(Of ToDo)

        Public Property MyUserInfo() As DbSet(Of MyUserInfo)
            Get
                Return m_MyUserInfo
            End Get
            Set(value As DbSet(Of MyUserInfo))
                m_MyUserInfo = Value
            End Set
        End Property
        Private m_MyUserInfo As DbSet(Of MyUserInfo)
    End Class


End Namespace

UPDATE UPDATE

Based on a comment I also checked here . 根据评论,我也在这里查看

I don't really get why this is a role issue, since I'm reusing a connection string that is already working fine with updating other (non-identity related) tables. 我真的不明白为什么这是一个角色问题,因为我正在重用一个已经正常工作的连接字符串来更新其他(非身份相关的)表。 Also I don't get why the error refers to the master table as I'd expect that I'm not trying to connect to that in any way by the manager.Find method. 此外,我不明白为什么错误引用master表,因为我预计我不会尝试通过manager.Find方法以任何方式连接到该表。

Anyway, the user through which I'm currently testing is already assigned to the sysadmin role: 无论如何,我正在测试的用户已经被分配到sysadmin角色:

在此输入图像描述

UPDATE 2 更新2

Ok, thanks to Jeremy's comment below I'm a step closer...I needed to add user IIS APPPOOL\\.NET v4.5 to role sysadmin , because that was the user connecting as shown in SQL Server profiler (although I'm unsure about the security risks when adding this user to this role). 好的,感谢Jeremy在下面的评论我更近了一步......我需要将用户IIS APPPOOL\\.NET v4.5到角色sysadmin ,因为那是用户连接,如SQL Server分析器中所示(尽管我是将此用户添加到此角色时,不确定安全风险)。 Anyway, the Find method no longer throws an error and using SQL Server profiler I see the SQL statement is fired when I execute this code Dim user As User = manager.FindByName(Trim(Username.Text)) 无论如何,Find方法不再抛出错误并使用SQL Server探查器我看到执行此代码时触发了SQL语句Dim user As User = manager.FindByName(Trim(Username.Text))

exec sp_executesql N'SELECT TOP (1) 
[Extent1].[Id] AS [Id], 
[Extent1].[ApplicationId] AS [ApplicationId], 
[Extent1].[MobileAlias] AS [MobileAlias], 
[Extent1].[IsAnonymous] AS [IsAnonymous], 
[Extent1].[LastActivityDate] AS [LastActivityDate], 
[Extent1].[MobilePIN] AS [MobilePIN], 
[Extent1].[LoweredEmail] AS [LoweredEmail], 
[Extent1].[LoweredUserName] AS [LoweredUserName], 
[Extent1].[PasswordQuestion] AS [PasswordQuestion], 
[Extent1].[PasswordAnswer] AS [PasswordAnswer], 
[Extent1].[IsApproved] AS [IsApproved], 
[Extent1].[IsLockedOut] AS [IsLockedOut], 
[Extent1].[CreateDate] AS [CreateDate], 
[Extent1].[LastLoginDate] AS [LastLoginDate], 
[Extent1].[LastPasswordChangedDate] AS [LastPasswordChangedDate], 
[Extent1].[LastLockoutDate] AS [LastLockoutDate], 
[Extent1].[FailedPasswordAttemptCount] AS [FailedPasswordAttemptCount], 
[Extent1].[FailedPasswordAttemptWindowStart] AS [FailedPasswordAttemptWindowStart], 
[Extent1].[FailedPasswordAnswerAttemptCount] AS [FailedPasswordAnswerAttemptCount], 
[Extent1].[FailedPasswordAnswerAttemptWindowStart] AS [FailedPasswordAnswerAttemptWindowStart], 
[Extent1].[Comment] AS [Comment], 
[Extent1].[Email] AS [Email], 
[Extent1].[EmailConfirmed] AS [EmailConfirmed], 
[Extent1].[PasswordHash] AS [PasswordHash], 
[Extent1].[SecurityStamp] AS [SecurityStamp], 
[Extent1].[PhoneNumber] AS [PhoneNumber], 
[Extent1].[PhoneNumberConfirmed] AS [PhoneNumberConfirmed], 
[Extent1].[TwoFactorEnabled] AS [TwoFactorEnabled], 
[Extent1].[LockoutEndDateUtc] AS [LockoutEndDateUtc], 
[Extent1].[LockoutEnabled] AS [LockoutEnabled], 
[Extent1].[AccessFailedCount] AS [AccessFailedCount], 
[Extent1].[UserName] AS [UserName]
FROM [dbo].[AspNetUsers] AS [Extent1]
WHERE ((UPPER([Extent1].[UserName])) = (UPPER(@p__linq__0))) OR ((UPPER([Extent1].[UserName]) IS NULL) AND (UPPER(@p__linq__0) IS NULL))',N'@p__linq__0 nvarchar(4000)',@p__linq__0=N'flo@outlook.com'

The strange thing is: when I execute it directly in SQL Server Management Studio I get a record returned, but in my code the variable user is Nothing ....What can it be? 奇怪的是:当我直接在SQL Server Management Studio中执行它时,我得到一条返回的记录,但在我的代码中,变量userNothing ....它可以是什么?

You connection string contains "User Id=sa;Password=XXXX", thus that connection is attempting to use SQL Server authentication. 您的连接字符串包含“User Id = sa; Password = XXXX”,因此该连接尝试使用SQL Server身份验证。 Your SSMS login property's title bar appears to be identifying a Windows account, which implies there is a belief that Windows Authentication should be used. 您的SSMS登录属性的标题栏似乎在标识Windows帐户,这意味着有人认为应该使用Windows身份验证。 And yet the connection is attempting to use SQL Server authentication (not Windows authentication). 然而,该连接正在尝试使用SQL Server身份验证(而不是Windows身份验证)。 If not already configured, SQL Server's authentication mode can be changed to support both SQL Authentication and Windows Authentication ("Mixed Mode" authentication) see https://msdn.microsoft.com/en-us/library/ms188670.aspx . 如果尚未配置,则可以更改SQL Server的身份验证模式以支持SQL身份验证和Windows身份验证(“混合模式”身份验证),请参阅https://msdn.microsoft.com/en-us/library/ms188670.aspx

Alternatively, the connection string can be changed to use Windows authentication/integrated security, per https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#integratedsecurity 或者,可以将连接字符串更改为使用Windows身份验证/集成安全性,按照https://msdn.microsoft.com/en-us/library/jj653752(v=vs.110).aspx#integratedsecurity

Try this, if your application pool is running under a NETWORK SERVICE identity. 如果您的应用程序池在NETWORK SERVICE标识下运行,请尝试此操作。 Then give SysAdmin Role for “NT AUTHORITY\\NETWORK SERVICE”: 然后为“NT AUTHORITY \\ NETWORK SERVICE”授予SysAdmin角色:

在此输入图像描述

Or give SysAdmin to which ever account running the app pool. 或者将SysAdmin提供给运行应用程序池的帐户。

If that doesn't work, check if any of these solutions help: CREATE DATABASE permission denied in database 'master' (EF code-first) 如果这不起作用,请检查以下任何解决方案是否有帮助: 在数据库'master'中创建数据库权限被拒绝(EF代码优先)

Edit: 编辑:

Its not very secure to give all these accounts sysAdmin. 给所有这些帐户sysAdmin不是很安全。 After you get this working tighten up the SQL security to just dbReader and dbWriter roles. 在您开始工作之后,将SQL安全性加强到dbReader和dbWriter角色。

And what is going wrong with the FindByName method? FindByName方法出了什么问题?

Now there is no exception and the problem is that no data is returned I think there is still something going on with permissions. 现在没有异常,问题是没有数据返回我认为仍然存在权限。

Since you're using SQL Authentication in the Connection String, can you try it with Windows Integrated? 由于您在连接字符串中使用SQL身份验证,您可以尝试使用Windows集成吗? Otherwise try using the appPool IIS accounts credentials in your connection string and see if that yields a clue as to whats wrong? 否则,请尝试在连接字符串中使用appPool IIS帐户凭据,看看是否会产生错误的线索?

Why instead to utilize an identity field don´t you utilize a HASH value in a NVARCHAR() field? 为什么要使用身份字段而不是在NVARCHAR()字段中使用HASH值?

For instance: you may get an individual data from user (or a join of his fields), calculate a HASH from .NET Cryptography library and set that NVARCHAR() with the data. 例如:您可以从用户(或其字段的连接)获取单个数据,从.NET Cryptography库计算HASH并使用数据设置NVARCHAR()。

This way (and supposing you´re utilizing SHA-512 HASH) you will be able to have a Base64 string of an individual data, like an Identity itself. 通过这种方式(假设您正在使用SHA-512 HASH),您将能够拥有一个单独数据的Base64字符串,就像身份本身一样。

But, if your goal is have an identity to the momentum , you may get the user data, plus the current datetime, calculate its HASH and save this data as the record´s identity. 但是,如果您的目标与动量有一致 ,您可以获取用户数据,加上当前日期时间,计算其HASH并将此数据保存为记录的标识。

You should probably use a different SQL account than "sa" but the default database for sa is master. 您应该使用与“sa”不同的SQL帐户,但sa的默认数据库是master。 The Find method is likely using the default database for the user even though myapp is defined in the connection string. 即使在连接字符串中定义了myapp,Find方法也可能使用用户的默认数据库。

Change the default database for sa to myapp, here: 将sa的默认数据库更改为myapp,此处:

在此输入图像描述

Your user should be added to the dbcreator role. 您的用户应添加到dbcreator角色。

Otherwise you're not allowed to create new databases. 否则,您不能创建新数据库。

Sysadmin/public are not enough. 系统管理员/公众是不够的。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 CREATE DATABASE 权限在数据库“master”中被拒绝。 EF Code-first asp.net Core 3.1 - CREATE DATABASE permission denied in database 'master'. EF Code-first asp.net Core 3.1 如何在现有数据库中实现ASP.NET Identity 2.0? - How to implement ASP.NET Identity 2.0 in existing database? 数据库&#39;master&#39;中的CREATE DATABASE权限被拒绝 - CREATE DATABASE permission denied in database 'master' Windows身份验证中如何处理“创建数据库主数据库中拒绝的数据库权限”? - How to handle “create database permission denied in database master” in windows Authentication? 如何在现有数据库中创建 ASP.Net Identity 表? - How to create ASP.Net Identity tables inside existing database? 为ASP.NET应用程序创建数据库权限 - CREATE DATABASE permission for asp.net application 数据库“master”中的 CREATE TABLE 权限被拒绝。 - CREATE TABLE permission denied in database 'master'. ASP.NET应用程序访问数据库的权限被拒绝 - Permission denied for ASP.NET app to access database 如何在ASP.NET MVC Core中使用数据库优先方法在现有数据库中实现Asp.net身份 - How to implement Asp.net identity with existing database using database first approach in asp.net mvc core 创建新数据库还是使用现有的ASP.NET Identity数据库? - Create new database or use the existing ASP.NET Identity database?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM