BUG: 작업자 프로세스가 ASPNET 계정으로 실행되면 명명된 파이프가 작동하지 않는다

이 문서는 이전에 다음 ID로 출판되었음: KR315159
현상
다음과 같은 경우에 오류 메시지가 나타날 수 있습니다.
  • ASP.NET 작업자 프로세스(Aspnet_wp.exe)가 기본 ASPNET 계정으로 실행되는 경우
  • 해당 응용 프로그램에서 가장(impersonation)을 사용하지 않는 경우
  • SQL Server .NET 데이터 공급자나 OLE DB .NET 데이터 공급자를 사용하여 데이터베이스에 연결한 경우
다음과 같은 오류 메시지가 나타날 수도 있습니다.
메시지 1
OleDbException (0x80004005): [DBNETLIB][ConnectionOpen (Connect()).]SQL Server가 없거나 액세스가 거부되었습니다.]
메시지 2
SqlException (0x80004005): [DBNETLIB][ConnectionOpen (Connect()).]SQL Server가 없거나 액세스가 거부되었습니다.]
메시지 3
System.Data.SqlClient.SqlException: SQL Server가 없거나 액세스가 거부되었습니다.
메시지 4
System.Data.OleDbClient.OleDbException: SQL Server가 없거나 액세스가 거부되었습니다.
원인
ASP.NET 작업자 프로세스가 ASPNET 계정으로 실행될 때 응용 프로그램에서 가장을 사용하지 않으면 해당 응용 프로그램에 대한 요청을 실행하는 스레드가 모두 프로세스 계정으로 실행됩니다. 그러나 ASPNET 계정은 데이터베이스 서버에 대한 명명된 파이프 연결을 설정할 수 없습니다.
해결 방법
이 문제를 해결하려면 다음 방법 중 하나를 사용하십시오.
  • ASP.NET 응용 프로그램에서 가장을 설정합니다. 이 방법은 액세스하는 컴퓨터와 데이터베이스에 대한 액세스 권한이 가장한 사용자에게 있는 경우에 유용합니다.
  • 명명된 파이프 프로토콜 대신 TCP/IP(전송 제어 프로토콜/인터넷 프로토콜)를 사용하여 데이터베이스에 연결합니다. 이렇게 하려면 연결 문자열에 다음 특성을 추가합니다.
    "Network Library =dbmssocn"						
    예를 들면 다음과 같습니다.
    "User ID=myUserId;Password=myPassword;Initial Catalog=Pubs;Data Source=myServer;Network Library =dbmssocn"					
  • 데이터베이스에서 사용되는 프로토콜을 확인합니다. SQL Server 데이터베이스에서는 서버 네트워크 유틸리티를 실행하여 특정 프로토콜을 확인합니다.
현재 상태
Microsoft는 "본 문서의 정보는 다음의 제품에 적용됩니다." 절에 나열한 제품에서 이 버그를 확인했습니다.
참조
ASP.NET 보안에 대한 자세한 내용은 Microsoft 기술 자료의 다음 문서를 참조하십시오.
306590 INFO: ASP.NET 보안 개요
<processModel> 섹션에 대한 자세한 내용은 다음 MSDN 설명서를 참조하십시오.



Microsoft 제품 관련 기술 전문가들과 온라인으로 정보를 교환하시려면 Microsoft 뉴스 그룹에 참여하시기 바랍니다.
kbreadme
속성

문서 ID: 315159 - 마지막 검토: 05/13/2007 05:10:05 - 수정: 2.4

Microsoft ASP.NET (included with the .NET Framework), Microsoft ASP.NET 1.1, Microsoft ADO.NET (included with the .NET Framework), Microsoft ADO.NET 1.1, Microsoft ADO.NET 2.0

  • kbbug kbdatabase kbhttpruntime kbnofix kbreadme kbsecurity KB315159
피드백