1
我有一個帶有帳戶控制器的ASP.NET MVC5 Internet應用程序。Roles.RoleExists()導致SQL網絡接口,錯誤:26
我想補充的角色,給用戶的singup 3個角色之間選擇的選擇,我的註冊方法如下:
[HttpPost]
[AllowAnonymous]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Register(RegisterViewModel model)
{
if (ModelState.IsValid)
{
if (!Roles.RoleExists("user"))
{
Roles.CreateRole("user");
}
if (!Roles.RoleExists("superuser"))
{
Roles.CreateRole("superuser");
}
if (!Roles.RoleExists("admin"))
{
Roles.CreateRole("admin");
}
var user = new ApplicationUser { UserName = model.Email, Email = model.Email };
var result = await UserManager.CreateAsync(user, model.Password);
if (result.Succeeded)
{
var currentUser = UserManager.FindByName(user.UserName);
string userType = null;
switch (model.Type)
{
case 1:
userType = "user";
break;
case 2:
userType = "superuser";
break;
case 3:
userType = "admin";
break;
default:
return View(model);
break;
}
var roleresult = UserManager.AddToRole(currentUser.Id,userType);
return RedirectToAction("Index", "Home");
}
AddErrors(result);
}
return View(model);
}
當我嘗試註冊和代碼達到if (!Roles.RoleExists("user"))
網站掛起約10秒,我得到以下錯誤:
SQL Network Interfaces, error: 26
[SqlException (0x80131904): Der opstod en netværksrelateret eller forekomstspecifik fejl, da det blev forsøgt at oprette forbindelse til SQL Server. Serveren blev ikke fundet, eller der var ikke adgang til den. Kontroller, at forekomstnavnet er korrekt, og at SQL Server er konfigureret til at tillade fjernforbindelser. (provider: SQL Network Interfaces, error: 26 - Fejl ved søgning efter angivet server/forekomst.)]
System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +5340655
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) +5350915
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) +5353725
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) +5355926
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) +75
[HttpException (0x80004005): Der kan ikke oprettes forbindelse til SQL Server-databasen.]
System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString) +130
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
我不知道如何將錯誤消息更改爲英語。
在web.config中我加<roleManager enabled="true" />
到的System.Web和我的ConnectionString如下:
<connectionStrings>
<add name="DefaultConnection" connectionString="Data Source=lmjzf199gd.database.windows.net;Initial Catalog=lenioDb;Persist Security Info=True;User ID=lenio;Password=*******;Integrated Security=False;Encrypt=False;TrustServerCertificate=False;" providerName="System.Data.SqlClient" />
顯然沒有設置口令的連接字符串中「*******」。
我使用的數據庫是天藍色的。
當我改變它我現在得到這個錯誤:無法找到存儲過程'dbo.aspnet_CheckSchemaVersion'。當我嘗試註冊時。 – Niclassg 2014-10-27 12:53:14
檢查更新後的答案(關於'aspnet_regsql'的部分) – SmartDev 2014-10-27 13:01:00
您的答案解決了我最初的問題,但導致新的問題。我稍後會再發表一個問題。 – Niclassg 2014-10-27 13:44:47