2012-04-01 4 views
0

이 내 코드입니다 : 내가 비주얼 스튜디오이 연주 시작을 여는 경우LINQ to SQL은 디버그 모드에서만 작동합니까?

DataClassesDataContext data = new DataClassesDataContext(); 
var hey = from p in data.Provas 
      select p; 
Response.Write(hey.First().title_it); 

, 그것은 http://localhost:51180/Website1/ 열리고 난 DB에서 가져온 값을 가져옵니다. 나는 (보통 나는이로 열립니다) http://localhost:8080/와 웹 사이트를 열 경우

하지만, 내가 얻을 :

System.Data.SqlClient.SqlException: Cannot open database "Website1" requested by the login. The login failed. 

사용자가 로그인 'IIS AppPool을 \ WEBSITE1을'실패했습니다.

어떻게 설정해야합니까? IIS 문제?

+2

를 추가 할 필요 해요 두 경우 모두 그 주에 액세스하기 위해 적절한 시스템 계정에 적절한 권한을 부여 이 메시지는 정확한 이유를 알려줍니다. 읽어 봤니? – usr

+0

하지만 디버그 모드에서 작동하는 이유는 무엇입니까? 이것은 로그인이 실패하지 않는다는 것을 의미합니다 ... 또한 LINQ to SQL 클래스를 사용하여 Visual Studio에서 DB를 관리 할 수 ​​있기 때문에 ... – markzzz

+0

http://msdn.microsoft.com/en-us/library/aa266913(v= vs.60) .aspx –

답변

3

@usr가 지적했듯이 대답은 여러분 앞에 있습니다.

응용 프로그램을 Visual Studio에서 디버그 모드로 실행하면 데이터베이스에 연결하는 사용자가 PC에 로그인하여 Visual Studio를 실행하는 사용자가됩니다. 이상한 점은이 사용자 (당신!)가 관리자이고 관리자 권한이 있다는 것입니다 SQL Server와 (나는 로컬 인스턴스를 가정하고있어).

IIS의 로컬 설치 (명시 적으로 풀 버전이라고 가정하는 것이 합리적입니다)를 통해 응용 프로그램을 실행할 때 응용 프로그램의 응용 프로그램 풀을 변경하지 않으면 로컬 시스템으로 실행됩니다 사용자 (지금은 어느 것을 잊어 버리고 볼 수있는 응용 프로그램 풀을 볼 수 있음) 기본적으로 해당 사용자는 SQL Server의 데이터베이스에 액세스 할 수 없습니다.

a) 응용 프로그램 풀의 사용자를 SQL Server에서 데이터베이스 권한이있는 사용자로 변경합니다 (올바른 방법을 원할 경우 명시 적으로 정의해야 함). 사용자) b)는 데이터베이스

(당신이 관리 Studio 또는 동등한를 사용하여 SQL Server에 대한 사용자)

+0

그 응용 프로그램 풀 연결 문자열을 변경해야한다고 생각하는데 web.config에서 볼 수 있습니다. 맞습니까? 실제는'': 어떻게 변경합니까? – markzzz

+0

이 http://stackoverflow.com에 이어 앱 풀의 고급 옵션에서 LocalSystem을 변경했습니다./questions/7698286/login-for-user-iis-apppool-asp-net-v4-0 – markzzz

+0

당신은 어떻게 생각하니? 운이 좋았나요? :) – markzzz

관련 문제