miércoles, 8 de julio de 2009

Problemas para utilizar el proveedor de seguridad predeterminado


El Primer problema a la hora de configurar la seguridad es que al entrar en la solapa Seguridad del configurador de ASP.NEt es que puede salir este mensaje:
Existe un problema con el almacén de datos seleccionado. Es posible que el nombre o las credenciales de un servidor no sean válidos, o que el administrador de funciones no esté habilitado. Haga clic en el botón para redirigirse a una página donde pueda elegir un nuevo almacén de datos.
El siguiente mensaje puede ayudar a diagnosticar el problema: No se puede conectar con la base de datos de servidor SQL Server.
Causa:
Una de las causas es que si tenemos instalado SQL Server en vez de SQL Express, visual studio 2005 no puede crear y adjuntar de forma automática a nuestro proyecto la base de datos de seguridad ( no tenemos el fichero APP_DATA/ASP_NET.MDB que utiliza visual studio para enlazar la base de datos con sql express)
Solución:
Ejecutar la utilidad aspnet_regsql.exe de la carpeta \windows\microsoft.net\Framework\v2.0... Salta un asistente para configurar la base de datos en el servidor de SQL que queramos

Modificar el archivo web.config indicando la ruta de la base de datos de seguridad en vez de la predeterminada, personalizando el servidor y la base de datos

connectionstrings>
remove name="LocalSqlServer">
add name="LocalSqlServer" providername="System.Data.SqlClient" connectionstring="server=NombreServidor;Integrated Security=SSPI;Database=NombreBaseDatos;>
/connectionstrings>
Nota: por problemas para publicar el scrip en el blog he quitado el símbolo "<" delante de connectionstrings, remove, add y /connectionstring. Algún día averiguare como publicar este tipo de scrips correctamente

A partir de este momento, ya podemos utilizar la herramienta de configuración almacenando la información en la nueva base de datos

1 comentario:

  1. que tal he tenido el mismo problema pero cuando hago la solucion que me propones no se puede hacer la conexcion y me aparece este mensaje:

    No se pudo realizar la instalación.
    Excepción:
    No se puede conectar con la base de datos de servidor SQL Server.
    ----------------------------------------
    Detalles del error
    ----------------------------------------
    System.Web.HttpException: No se puede conectar con la base de datos de servidor SQL Server. ---> System.Data.SqlClient.SqlException: Error relacionado con la red o específico de la instancia mientras se establecía una conexión con el servidor SQL Server. No se encontró el servidor o éste no estaba accesible. Compruebe que el nombre de la instancia es correcto y que SQL Server está configurado para admitir conexiones remotas. (provider: Proveedor de canalizaciones con nombre, error: 40 - No se pudo abrir una conexión con SQL Server)
    en System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)
    en System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)
    en System.Data.SqlClient.TdsParser.Connect(ServerInfo serverInfo, SqlInternalConnectionTds connHandler, Boolean ignoreSniOpenTimeout, Int64 timerExpire, Boolean encrypt, Boolean trustServerCert, Boolean integratedSecurity, SqlConnection owningObject)
    en System.Data.SqlClient.SqlInternalConnectionTds.AttemptOneLogin(ServerInfo serverInfo, String newPassword, Boolean ignoreSniOpenTimeout, Int64 timerExpire, SqlConnection owningObject)
    en System.Data.SqlClient.SqlInternalConnectionTds.LoginNoFailover(String host, String newPassword, Boolean redirectedUserInstance, SqlConnection owningObject, SqlConnectionString connectionOptions, Int64 timerStart)
    en System.Data.SqlClient.SqlInternalConnectionTds.OpenLoginEnlist(SqlConnection owningObject, SqlConnectionString connectionOptions, String newPassword, Boolean redirectedUserInstance)
    en System.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, Object providerInfo, String newPassword, SqlConnection owningObject, Boolean redirectedUserInstance)
    en System.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection)
    en System.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnection owningConnection, DbConnectionPool pool, DbConnectionOptions options)
    en System.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject)
    en System.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject)
    en System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)
    en System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)
    en System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory)
    en System.Data.SqlClient.SqlConnection.Open()
    en System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString)
    --- Fin del seguimiento de la pila de la excepción interna ---
    en System.Web.Management.SqlServices.GetSqlConnection(String server, String user, String password, Boolean trusted, String connectionString)
    en System.Web.Management.SqlServices.SetupApplicationServices(String server, String user, String password, Boolean trusted, String connectionString, String database, String dbFileName, SqlFeatures features, Boolean install)
    en System.Web.Management.SqlServices.Install(String database, SqlFeatures features, String connectionString)
    en System.Web.Management.ConfirmPanel.Execute()

    ResponderEliminar