2010-07-06 6 views
3

Windows 인증을 사용하는 SQL Server 저장 프로 시저 및 웹 서비스를 사용하는 ASP.Net 응용 프로그램이 있습니다. 아이디어는 웹 서비스를 호출하기 위해 로그인 된 사용자 자격 증명을 사용하는 것입니다 (웹 서비스가 인증 자격 증명을 사용하여 작성되거나 업데이트 된 레코드의 소유자를 지정하므로 중요 함).VS 개발 서버에서 작동하지만 IIS에서 작동하지 않는 웹 응용 프로그램

VS.Net 통합 웹 서버를 사용할 때 결과가 정상입니다 (이 서버가 현재 로그인 된 사용자 계정으로 시작될 수 있음) SQL Server SP는 예상 ​​결과를 반환합니다 (쿼리 분석기에서 실행하더라도) 웹 서비스 자격 증명이 현재 로그인 한 사용자에게 올바르게 설정되어 있어야합니다.

그러나 로컬 IIS에서 응용 프로그램을 호스팅 할 때 예상대로 작동하지 않습니다. SQL Server 저장 프로 시저가 EMPTY 데이터 집합을 반환하고 웹 서비스 자격 증명이 비어있게 설정됩니다. 내가

myService.Credentials의 =의 System.Net.CredentialsCache.DefaultCredentials

을 사용하고

보테가 웹 서비스 호스트 가상 디렉터리 및 내 응용 프로그램 가상 디렉터리는 IIS의 디렉터리 보안에서 Windows 인증을 사용하고 있습니다.

아무도 아이디어가 있습니까 ???

+0

내 환경 : VS 2008, SQL Server 2008, IIS 6.0이 설치된 Virtual PC에서 실행되는 Windows Server 2003. IIS가 로컬 시스템 계정으로 실행 중입니다. –

+0

응용 프로그램 풀 ID는 네트워크 서비스입니다. –

+0

도메인 또는 ASP.Net 사용자가 데이터베이스 사용 권한으로 데이터베이스에 액세스 할 수 있도록 허용합니다. –

답변

0

불행히도 나는 이유를 찾지 못했습니다. 그러나 이것을 해결하기 위해 가장을 사용했습니다.

아무 값도 반환하지 않는 SP 관련. SP에서 뷰를 사용하고 로그인 된 Windows 계정에 해당 뷰에 대한 충분한 권한이없는 방법을 알아 냈습니다.

1

로컬 IIS는 사용자 네트워크 서비스로 asp.net을 호스팅하는 응용 프로그램 풀을 가장 많이 실행합니다.
asp.net 응용 프로그램이 windowsauthentification을 올바르게 사용하지 않는 것 같습니다. 올바르게 로그인 했습니까? 새 빈 페이지를 만들고 Page_Onload 메서드에 중단 점을 설정하십시오. 거기에 가서 (내가 생각하기에 프롬프트 창)이 this.User.Identity.Name에 입력하고 Windows 로그인과 일치하는지 확인하십시오.

+0

디버그 및 코드를 사용하여 동일한 페이지를 확인했습니다. Page.User.Identity .Name은 로그인 한 사용자의 올바른 이름 즉 "CONTOSO \\ Administrator"를 제공합니다. –

+0

응용 프로그램 풀 ID는 네트워크 서비스입니다. –

0

IIS 관리자에서. 웹 사이트 -> 등록 정보를 클릭하고 디렉토리 보안을 선택하십시오. 그런 다음 익명 액세스 및 인증 제어를 선택한 다음 Windows 통합을 선택하여 Windows 도메인 사용자를 허용하십시오. 웹 사이트에 액세스하려면

+0

이미 언급했는데 "웹 서비스 호스트 가상 디렉터리에 저장하고 응용 프로그램 가상 디렉터리를 사용 중입니다. IIS의 디렉터리 보안에서 Windows 인증 "을 참조하십시오. –

관련 문제