2012-01-30 19 views
9

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.
+0

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

+0

@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

+0

Usted ¿configuró la "aplicación" en el db desplegado? –

Respuesta

1

El problema se debió a la versión de RIA Services instalada en el servidor.

Recientemente hemos cambiado los proyectos para incluir los Servicios RIA a través del administrador de paquetes NuGet y este servidor ya tenía instalados los Servicios RIA para VS2010. Cuando resolvimos eso, todo volvió a la vida.

No está claro por qué tardó tanto tiempo en manifestarse este problema.

0

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 (a la que sí tengo acceso) no reproduce el problema.

Compruebe la configuración del servidor web y que la base de datos está instalada correctamente.

parece que el servidor web config/db installion es para mí.

+0

Esa es la conclusión a la que llegamos también. Sin embargo, nada ha aparecido todavía. – ChrisF

+0

@ChrisF Compruebe (y compárelo con el servidor web en funcionamiento) a qué base de datos y esquema se está conectando el usuario y la asignación del usuario en el servidor sql. Parece que la conexión se está estableciendo en una base de datos que no tiene GetUserSecurityConfig. Pruebe 'Initial Catalog = schema.database' para confirmar a dónde se está conectando. – PhilW

Cuestiones relacionadas