2011-09-27 3 views
0

Visual Studio 2008에서 만든 asp.net 웹 응용 프로그램이 있습니다. VS 2010으로 전환 할 때까지 모든 것이 잘 돌아갔습니다. 그런 일이 발생했을 때 나는 이상한 행동을보기 시작했습니다. 내 데이터베이스 연결 문자열.web.config 백 슬래시가 두 번 나타남 Visual Studio 2010

<add name="DBname" connectionString="Data Source=SomeText\SomeMoreText;Initial Catalog=DB;Integrated Security=True" providerName="System.Data.SqlClient"/> 

문제는 SomeText \ SomeMoreText 부분 함께 다음과 같이 문자열 (편집 할 수 있지만 형식은 동일)입니다.
디버거에서 실행하면 '\'가 '\\'(으)로 변경됩니다. 이것은 모든 것을 깨뜨린다.

매우 간단한 대답을 가지고있는 내 질문은 다음과 같습니다. 여분의 슬래시를 삽입하지 않고 정상적인 문자열처럼 연결 문자열을 처리하도록 VS2010을 가져 오는 방법은 무엇입니까?

+0

이스케이프 문자열 때문에 문자열을 받기 전에 @ 기호를 추가하십시오. –

+3

문제가 확실합니까? 디버거에서 ConnectionString을 볼 때 이스케이프 된 값을 표시하므로 이중 \\. 오류는 무엇입니까? –

+1

나는 이것을 한 번도 경험하지 못했다. 문제없이 \ 사용. 하지만 C#을 사용하고 디버거에서이 문자열을 찾으면 \\를 문자열로 보는 경우 \ 대신 사용합니다. AppDomain.CurrentDomain.BaseDirectory와 같은 직접적인 창에서 테스트를 위해 파일 경로를 살펴보고 c : \\ users \\ name \\ documents \\ etc와 같은 경로를 반환합니다. –

답변

5

문자열의 해석에 관한 한 추가 슬래시가 없습니다. 이것은 슬래시 '\'앞에 이스케이프 문자 '\'입니다.

증거가 필요하십니까? 모두 콘솔 및 디버그 (출력 창)에서 문자열,이를 것으로

 string test = "This\\is\\a\\test"; 

     Console.WriteLine(test); 
     Debug.WriteLine(test); 

     Console.Read(); 

참고 : 여기에

Debug.WriteLine(connectionStringValueHere); 

작은 응용 프로그램입니다 (물론 적절한 이름으로) 코드에 다음을 추가 \ is \ a \ test입니다. 당신이 직접 실행 창에서 다음을 수행하면 코드는 중단 점에있을 때 :
? test 

당신은 다음과 같은 출력

? test 
"This\\is\\a\\test" 

를 참조하지만 당신은 문자열 정상입니다 존재 탈출을 가지고있다. 그물.

+0

그 성가신 디버거. 즉, 다른 것 (아마도 어딘가에 숨어있는 db 권한)이 잘못되었음을 의미하지만이 문제는 실제로 존재하지 않습니다. – user663467

+0

db 권한 일 수 있지만 실제 서버 레벨에는 없을 수 있습니다. 어떤 종류의 응용 프로그램입니까? (웹 또는 Windows 등)? 슬래시가있는 데이터 소스는 기본값이 아닌 다른 인스턴스를 제안하므로 어떤 버전의 SQL Server (또는 SQL Server Express)일까요? 조사 할 경로가 많이 있습니다. 폭탄이 어디에 있는지 파악하는 것이 중요합니다. 프로파일 러를 설정하고 SQL Server 측에서이 모습을 본 적이 있습니까? –

+0

나는 그것을 이해했다. 정말이 토론에 아무 것도 추가하지 않는 무언가였습니다. – user663467