2012-01-30 1 views
9

우리는 다중 소유의 Silverlight 응용 프로그램을 작성하고 있습니다. 사용자는 Windows Forms 인증을 사용하여 로그인하고 테이블에서 해당 사용자의 연결 문자열을 가져옵니다. 문자열의 형식은 다음과 같습니다."응용 프로그램 이름 = 응용 프로그램"이 연결 문자열에있는 경우이 데이터베이스 연결이 실패하는 이유는 무엇입니까?

Data Source=1.2.3.4; Initial Catalog=database; Persist Security Info=True; User ID=######; Password=########## 

괜찮 았습니다.

Data Source=1.2.3.4; Initial Catalog=database; Application Name=application; Persist Security Info=True; User ID=######; Password=########## 

그러나, 지금은 연결이되지 않는 우리가 얻고 오류 : 우리는 다음 이유 outlined here를 들어, 응용 프로그램 이름을 설정하는 것은 좋은 생각이 될 것이라고 결정했다. 이것은 배포 된 사이트에서만 실패합니다. Visual Studio를 통한 실행은 분명히 영향을받지 않습니다. 연결을 만드는 코드는 변경되지 않았습니다. 나는 변화가 있어야한다고 믿고 기꺼이 하겠지만, 나는 그들이해야 할 일을 해결할 수 없었다.

연결

는 다음과 같이 생성되는 :

public class OurDataContext : DataContext 
{ 
    public OurDataContext() 
     : base(SessionCache.OurConnectionString) 
    { 
     .... 
    } 
} 

SessionCache.OurConnectionString는 데이터베이스에서 읽을 문자열입니다.

UPDATE는

연결 문자열 에 대한 변경은 붉은 청어 수 있습니다. 우리는이 오류를 한 웹 서버에서만받습니다 (직접 액세스 할 수없는 웹 서버). 다른 웹 서버에서 참조하는 데이터베이스에 속성을 추가하면 (즉, 을 수행하면에 액세스 할 수 있음) 문제가 재현되지 않습니다. 이것은 내가 오류가 다른 곳의 결론에 이르게합니다. 그러나, 나는 아직도 이것을 해결하기 위해 더 가깝지 않다.

실제 오류는 예외입니다 :

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. 

이 변경되지해야 몇 가지 매우 기본적인 것들을 반환에 내가 오늘했던 모든 연구 :

  • 시스템. ComponentModel.DataAnnotations, System.ServiceModel.DomainServices.EntityFramework, System.ServiceModel.DomainServices.Hosting 및 System.ServiceModel.DomainServices.Server가 \ bin 디렉터리에 복사되지 않습니다. 내가 확인 했어.
  • 데이터베이스 서버에 연결하는 동안 오류가 발생했습니다. 나는 을 생각하지 않는다. 폼 인증이 작동하는 경우이다. 서버의 다른 데이터베이스이지만 자격 증명은 동일합니다.
+0

나는 어떤 SQL 서버 전문가도 아니다 그러나 나는 "지속 보안 정보"부분을 제거하는 노력과 도움이 있는지 ... 또 다른 점을 볼 것입니다 : "응용 프로그램"공백 또는 유사한 포함되어 있습니까? – Yahia

+0

@Yahia - "application"에 공백이 없어야합니다. "보안 정보 유지"사용자 이름과 암호를 다시 가져올 필요가 있습니다. [원본] (http://msdn.microsoft.com/en-us/library/system.data.sqlclient.sqlconnection.connectionstring.aspx) – ChrisF

+0

배포 된 데이터베이스에서 "응용 프로그램"을 구성 했습니까? –

답변

1

문제는 서버에 RIA 서비스 버전이 설치되어 있기 때문에 나타났습니다.

우리는 최근에 이미 설치 VS2010를위한 RIA 서비스를 가지고 RIA NuGet 패키지 관리자를 통해 서비스 및이 서버를 포함하는 프로젝트를 변경할 것입니다. 우리가 그것을 분류하면 모든 것이 다시 살아났습니다. 그것이 비록 표출이 문제에 대한 너무 오래 걸려서 이유

그것은 분명하지 않다.

0

이 오류는 하나의 웹 서버에서만 발생합니다 (직접 액세스 할 수 없음). 다른 웹 서버에서 액세스하는 데이터베이스에 속성을 추가해도 문제가 재현되지 않습니다.

웹 서버 구성을 확인하고 데이터베이스가 올바르게 설치되었는지 확인하십시오.

은 webserver config/db installion과 같습니다.

+0

그 결론은 우리도 마찬가지입니다. 그러나 아직 아무것도 나타나지 않았습니다. – ChrisF

+0

@ChrisF 사용자가 연결하는 데이터베이스와 스키마 및 SQL Server의 사용자 매핑을 확인합니다 (작동중인 웹 서버와 비교). GetUserSecurityConfig가없는 데이터베이스에 연결이 설정되고있는 것 같습니다. 'Initial Catalog = schema.database'를 시도하여 연결 대상을 확인하십시오. – PhilW