Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么在Membership.GetUser().Email上出现与网络相关或特定于实例的错误?_C#_Asp.net Mvc_Database_Asp.net Identity - Fatal编程技术网

C# 为什么在Membership.GetUser().Email上出现与网络相关或特定于实例的错误?

C# 为什么在Membership.GetUser().Email上出现与网络相关或特定于实例的错误?,c#,asp.net-mvc,database,asp.net-identity,C#,Asp.net Mvc,Database,Asp.net Identity,下面是应用程序崩溃的控制器方法 [HttpGet] public ActionResult SendInvitation(Guid appointmentId) { if (User.Identity.IsAuthenticated) { var ownerEmail = Membership.GetUser().Email; //error on this line _appointmentRepository.SendEmailToOwner(

下面是应用程序崩溃的控制器方法

[HttpGet]
public ActionResult SendInvitation(Guid appointmentId)
{
    if (User.Identity.IsAuthenticated)
    {
        var ownerEmail = Membership.GetUser().Email; //error on this line
        _appointmentRepository.SendEmailToOwner(ownerEmail, appointmentId);
    }
    return Content("message sent to owner");
}
每当我运行我的应用程序时,一切都很好,数据库读取、写入、创建用户使用Asp.net标识一切都很顺利。但在控制器的方法中,当试图获取用户的电子邮件时,它会崩溃

当我为该方法设置断点时,它将通过User.Identity.IsAuthenticated,并在尝试访问电子邮件时崩溃

这是浏览器中显示的错误:

堆栈跟踪:

[SqlException (0x80131904): A network-related or instance-specific error occurred while establishing a connection to SQL Server. The server was not found or was not accessible. Verify that the instance name is correct and that SQL Server is configured to allow remote connections. (provider: SQL Network Interfaces, error: 26 - Error Locating Server/Instance Specified)]
   System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5352431
   System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +244
   System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, Boolean withFailover) +5363103
   System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean ignoreSniOpenTimeout, TimeoutTimer timeout, Boolean withFailover) +145
   System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(ServerInfo serverInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString connectionOptions, SqlCredential credential, TimeoutTimer timeout) +922
   System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(TimeoutTimer timeout, SqlConnectionString connectionOptions, SqlCredential credential, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance) +307
   System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData) +518
   System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions) +5365937
   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) +5368242
   System.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +146
   System.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions) +16
   System.Data.SqlClient.SqlConnection.TryOpenInner(TaskCompletionSource`1 retry) +94
   System.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry) +110
   System.Data.SqlClient.SqlConnection.Open() +96
   System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +76

[HttpException (0x80004005): Unable to connect to SQL Server database.]
   System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +131
   System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install) +89
   System.Web.Management.SqlServices.Install(String database, String dbFileName, String connectionString) +27
   System.Web.DataAccess.SqlConnectionHelper.CreateMdfFile(String fullFileName, String dataDir, String connectionString) +386
编辑1: 我创建了自己的ApplicationUser类,该类继承自deafult IdentityUser类 那是

公共类应用程序用户:IdentityUser { [必需] 公共重写字符串用户名{get;set;}

//public string Password { get; set; }

public string FirstName { get; set; }
public string LastName { get; set; }

[Required]
public string Email { get; set; }
public Boolean IsApproved { get; set; }

public string Company { get; set; }
[DataType(DataType.MultilineText)]
public string Comment { get; set; }
[DataType(DataType.PhoneNumber)]
public  string Phone{ get; set; }
public Boolean IsLockedOut { get; set; }
public DateTime DateTimeRegistered { get; set; }
public DateTime? LastLoginDateTime { get; set; }
public DateTime? LastActivityDateTime { get; set; }

public int PasswordFailureSinceLastSuccess { get; set; }
public DateTime? LastPasswordFailureDate { get; set; }
public string PasswordVerificationToken { get; set; }
public DateTime? PasswordVerificationTokenExpirationDateTime { get; set; }
public string ConfirmationToken { get; set; }

public virtual ICollection<Appointment> Appointments { get; set; }

public int LicenseId { get; set; }
public License License { get; set; }
}

现在,如果我发现用户有类似_db.Users.FindGuidID的东西;然后通过电子邮件获取用户实例


这就是我尝试使用默认成员身份获取电子邮件时出错的原因吗?

ASP.NET Identity引入了一种全新的体系结构,它不使用旧的成员身份提供程序概念,这是您在调用时使用的:

var ownerEmail = Membership.GetUser().Email;
下面是您应该如何访问ASP.NET Identity中的用户信息

UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));         
var user = UserManager.FindById(User.Identity.GetUserId());
if (user != null)
    _appointmentRepository.SendEmailToOwner(user.Email, appointmentId);
UserManager<ApplicationUser> UserManager = new UserManager<ApplicationUser>(new UserStore<ApplicationUser>(new ApplicationDbContext()));         
var user = UserManager.FindById(User.Identity.GetUserId());
if (user != null)
    _appointmentRepository.SendEmailToOwner(user.Email, appointmentId);