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 経由でアプリケーションにアクセスしようとすると、同じ接続エラーが発生しました。

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="DefaultConnection"の代わりにconnectionStringName ="WingtipToys"を使用

そして、すべてがうまくいきました。これは最善の解決策ではないかもしれませんが、この回答が誰かの役に立てば幸いです。

于 2013-12-12T15:57:35.940 に答える