1

嗨,我第一次尝试使用和理解角色。我该如何解决这个问题?我需要添加一些东西WebConfig吗?

private static void CreateRoleIfNotExists(string role)
{
    if (!Roles.RoleExists(role)) // this line throws the error.
    {
        Roles.CreateRole(role);
    }  
}

更新,插入下面的完整堆栈跟踪:

[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) +4856727 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) +194 System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject) +4867325 System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject) +90 System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart) +374 System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance) +225 System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance) +189 System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection) +4868451 System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options) +31 System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject) +431 System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject) +66 System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject) +499 System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection) +65 System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory) +117 System.Data.SqlClient.SqlConnection.Open() +122 System.Web.DataAccess.SqlConnectionHolder.Open(HttpContext context, Boolean revertImpersonate) +87 System.Web.DataAccess.SqlConnectionHelper.GetConnection(String connectionString, Boolean revertImpersonation) +221 System.Web.Security.SqlRoleProvider.RoleExists(String roleName) +478 System.Web.Security.Roles.RoleExists(String roleName) +73 dk.certifikat.Global.CreateRoleIfNotExists(String role)

4

2 回答 2

2

如果您使用标准的 .net 会员提供程序和角色提供程序,则需要设置 aspnetdb

这可以通过命令提示符中的命令来完成

aspnet_regsql

这可以在您的 .net 框架目录中找到。如果你这样做了。您需要为应用程序提供到运行 aspnetdb 的数据库的连接字符串。

更多相关信息可以在这里找到。

于 2012-09-17T07:42:15.070 回答
1

我也遇到了这个错误。我在http://www.asp.net/web-forms/tutorials/aspnet-45/getting-started-with-aspnet-45-web-forms/introduction-and-overview上关注了他们也使用的示例Roles.RoleExists 在某个时刻。当我使用 Visual Studio Express 在本地运行应用程序时,一切正常。但是当我尝试通过网络访问应用程序时,我得到了同样的连接错误。

原来我不得不更改 web.config 文件。我更改了 DefaultProfileProvider、DefaultMembershipProvider 和 DefaultRoleProvider。我将 connectionStringName 属性更改为我添加到 connectionStrings 中的属性,即:

<add name="WingtipToys" providerName="System.Data.SqlClient" connectionString="Server=.\SQLEXPRESS;Database=wingtiptoys;Integrated Security=False;User Id=wingtiptoys;Password=wingtiptoys;AttachDbFileName=|DataDirectory|wingtiptoys.mdf;Persist Security Info=False" />

例如,DefaultMembershipProvider 现在看起来像:

<add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider, System.Web.Providers, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" connectionStringName="WingtipToys" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minRequiredPasswordLength="6" minRequiredNonalphanumericCharacters="0" passwordAttemptWindow="10" applicationName="/" />

使用connectionStringName="WingtipToys"而不是connectionStringName="DefaultConnection"

然后一切正常。这可能不是最好的解决方案,但我希望这个答案可以帮助某人。

于 2013-12-12T15:57:35.940 回答