2012-03-08 3 views
1

IIS7.5에는 두 개의 웹 사이트가 있으며 네트워크상의 서버에 Access 데이터베이스가 있습니다.IIS7.5 MS 액세스 인증

첫 번째 웹 사이트는 특정 네트워크 계정 ('jim.smith')을 사용하여 익명 인증을 사용합니다.

두 번째 웹 사이트에는 Windows 인증이 있습니다.

Access 데이터베이스에 DSN-Less 연결을 사용하기 위해 일부 ASP를 작성했으며 두 웹 사이트에서 동일한 코드를 사용하고 있습니다.

첫 번째 웹 사이트 익명 설정 ('jim.smith')과 동일한 네트워크 계정으로 컴퓨터에 로그온하면 브라우저에서 볼 때 첫 번째 웹 사이트에서 데이터베이스에 액세스 할 수 있고 두 번째 웹 사이트에서 데이터베이스에 액세스 할 수 있습니다 웹 사이트는 그렇지 않습니다.

오류 메시지 : 80004005 Microsoft Jet 데이터베이스 엔진에서 '...'파일을 열 수 없습니다. 이미 다른 사용자가 독점적으로 열었거나 해당 데이터를 볼 수있는 권한이 필요합니다.

다른 사용자가 열 수는 없습니다.

익명 설정을 통해 네트워크 사용자 'jim.smith'가 첫 번째 웹 사이트에 액세스하고 있습니다.

windows auth를 통해 네트워크 사용자 'jim.smith'가 두 번째 웹 사이트에 액세스하고 있습니다.

웹 사이트가 아닌 웹 사이트에서 데이터베이스 작업에 액세스하는 이유는 무엇입니까 ..?

아무도 익숙하지 않은 설정으로 Windows 인증을 사용하는 방법을 알고 있으므로 웹 사이트 2의 데이터베이스에 액세스 할 수 있습니까?

건배!

스티브

편집 : 모두 데이터베이스가 앉아 폴더에 대한 모든 권한을 가지고있다.

+0

폴더에 대한 사용 권한을 살펴 보셨습니까? Access는 잠금 파일 (ldb)을 작성하며 사용자가 폴더에 대한 사용 권한이 없으면 잠금 파일에 액세스 할 수 없으므로 데이터베이스를 사용할 수 없습니다. – Fionnuala

+0

네, 죄송 합니다만, 모두에게 폴더에 대한 모든 권리가 있습니다. 하지만 내가 말했듯이 두 웹 사이트에서 동일한 사용자 (jim.smith)가 사용되어야하므로 같은 수준의 권한이 적용되어야합니다. 차이점은 하나의 웹 사이트는 익명입니다 (짐 사용).smith의 계정)이고 하나는 windows auth (jim.smith로 로그온)입니다. –

답변

0

들어오는 사용자가 데이터베이스에 액세스하는 데 가장을 사용하도록 설정해야합니다. (응용 프로그램 풀 ID) 그렇지 않으면 응용 프로그램 풀의 사용자가 사용되며, 이는 일반적으로 심지어는 서버 자체에 대한 권리가없는

서버에 IIS에 '통합 파이프 라인'을 사용하고있는 경우 응용 프로그램은 'BeginRequest'및 'AuthenticateRequest'단계 (통합 모드에서는 가장을 사용할 수없는 유일한 단계)에서 요청 사용자를 가장하려고하지만 응용 프로그램의 다른 영역에서 가장을 필요로하므로이 오류를 무시합니다 (500 - 내부 서버 오류) 응용 프로그램의 web.config에 다음을 추가하여

<system.webServer> 
     <validation validateIntegratedModeConfiguration="false"/> 
</system.webServer> 

참조 : http://allen-conway-dotnet.blogspot.com/2010/11/how-to-use-impersonation-in-aspnet.html

+0

답장을 보내 주셔서 감사합니다 Schwarzie2478, 내 web.config 파일에이 줄을 추가하려고했지만 여전히 작동하지 않습니다. 레코드의 경우 .NET이 아닌 Classic ASP를 사용하고 있습니다. –

+0

ASP.NET을 사용하는 습관의 힘 – Schwarzie2478