Estamos escribiendo una aplicación Silverlight de varios usuarios. El usuario inicia sesión con la autenticación de Windows Forms y extraemos la cadena de conexión para ese usuario de una tabla. La cadena era de la siguiente forma:¿Por qué falla esta conexión de la base de datos cuando "Nombre de la aplicación = aplicación" está en la cadena de conexión?
Data Source=1.2.3.4; Initial Catalog=database; Persist Security Info=True; User ID=######; Password=##########
Esto funcionaba bien. Decidimos entonces que la fijación del nombre de la aplicación, por razones outlined here sería una buena idea:
Data Source=1.2.3.4; Initial Catalog=database; Application Name=application; Persist Security Info=True; User ID=######; Password=##########
Sin embargo, ahora no se está realizando la conexión de errores por lo que estamos recibiendo. Esto solo falla en el sitio implementado. Correr a través de Visual Studio aparentemente no se ve afectado. No ha habido cambios en el código que hace la conexión. Estoy dispuesto a creer que deberían haber cambios, pero no he podido determinar qué deberían ser.
La conexión se está creando de esta manera:
public class OurDataContext : DataContext
{
public OurDataContext()
: base(SessionCache.OurConnectionString)
{
....
}
}
SessionCache.OurConnectionString
es la cadena de leer desde la base de datos.
ACTUALIZACIÓN
El cambio en la cadena de conexión puede ser una pista falsa. Solo obtenemos esta falla en un servidor web (al que no tengo acceso directo). Agregar la propiedad a la base de datos a la que hace referencia otro servidor web (al que I tiene acceso el) no reproduce el problema. Esto me lleva a la conclusión de que el error está en otro lugar. Sin embargo, todavía no estoy más cerca de resolver esto.
El error real es una excepción:
An exception of type 'System.ServiceModel.DomainServices.Client.DomainOperationException' occurred and was caught.
------------------------------------------------------------------------------------------------------------------
01/31/2012 14:18:53
Type : System.ServiceModel.DomainServices.Client.DomainOperationException, System.ServiceModel.DomainServices.Client, Version=2.0.5.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35
Message : Load operation failed for query 'GetUserSecurityConfig'. The remote server returned an error: NotFound.
Status : ServerError
ErrorCode : 0
Data : System.Collections.ListDictionaryInternal
Stack Trace : The stack trace is unavailable.
Toda la investigación que he hecho hoy en este regresa algunas cosas bastante básicas que no debería haber cambiado:
- sistema. ComponentModel.DataAnnotations, System.ServiceModel.DomainServices.EntityFramework, System.ServiceModel.DomainServices.Hosting y System.ServiceModel.DomainServices.Server no se copian en el directorio \ bin. Lo he comprobado y lo son.
- Errores al conectarse al servidor de la base de datos. Yo no piensa este es el caso ya que la autenticación de formularios funciona. Es una base de datos diferente en el servidor, pero las credenciales son las mismas.
No soy un experto en SQL Server pero trataría de eliminar la parte "persistir información de seguridad" y ver si ayuda ... otro punto: ¿la "aplicación" contiene espacios o algo similar? – Yahia
@Yahia - Sin espacios en "aplicación". "Persist Security Info" debe ser verdadero para recuperar el nombre de usuario y la contraseña [Origen] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx) – ChrisF
Usted ¿configuró la "aplicación" en el db desplegado? –