IIS7.5에 내 웹 사이트를 배포 한 결과 응용 프로그램 풀 ID가 ApplicationPoolIdentity
(기본값 : IIS Application Pool Identities으로 권장) 인 경우 Ninject
이 무시되는 것처럼 보입니다. 다음 오류가 발생하는 동안IIS 7 응용 프로그램 풀 ID를 올바르게 설정하는 방법?
나는 (모든 하위 폴더 및 파일 포함) 사이트가 포함 된 폴더에System.InvalidOperationException : 맨 처음 컨트롤러를 만드는 유형 의 컨트롤러를 만들 하려고 할 때 오류가 발생했습니다 '..MainController'. 컨트롤러에 매개 변수없는 public 생성자가 있는지 확인하십시오. ---> System.DirectoryServices.DirectoryServicesCOMException : 작업 오류가 발생했습니다.
IIS AppPool\<MySiteAppPool>
에
FullAccess
을 부여했지만,이 아무것도 변경하지 않았다.
그러나 응용 프로그램 풀 ID를 모든 도메인 계정 (관리 권한이없고 사이트가있는 폴더에 대한 액세스 권한이없는 단순한 계정)으로 설정하면 정상적으로 작동합니다.
Ninject는 NuGet 패키지를 통해 Setting up an MVC3 application 튜토리얼에 따라 설치됩니다.
관련성이있는 경우 사이트가 Windows 인증을 사용하여 도메인 인트라넷에서 작업하기로되어 있습니다.
그래서 유일한 문제는 응용 프로그램 풀 ID와 관련된 것 같습니다. 내가 권장하는 방법을 사용하기를 열망하는 한, 도메인 계정이 아닌 ApplicationPoolIdentity
을 갖고 싶습니다.
무엇이 연결할 수 있습니까? 이 모든 것들을 함께 혼합 할 수 있습니까?
여기에 유사한 문제가있는 SO 스레드가 있습니다 : ASP.NET MVC 4 + Ninject MVC 3 = No parameterless constructor defined for this object. 그러나 거기에도 전혀 적합한 대답이 없습니다.
삭제 된 의견이 제안됨에 따라 NetworkSerive
을 신원으로 사용하려고 시도했습니다. 그리고 제대로 작동했습니다. 그러나 비 특권 도메인 계정보다 훨씬 좋을 것으로 생각됩니다.
편집은 갑자기 다른 의존성을 발견 : 나는 클라이언트 측 사용자의 자격 증명이 사용될 것으로 예상하지만 응용 프로그램 풀 ID는 SQL 서버의 Windows 인증에 사용됩니다.
의견
을 기반으로 원격 SQL 서버가 가장 통해 인증 자격 증명을 사용하여 액세스 할 수 있음을 동의합니다.
그러나 ApplicationPoolIdentity 및 Ninject의 문제점은 아직 명확하지 않습니다.
이 질문의 맨 위에 나와있는 기사는 가상 계정 에 사용자 프로필이 없음이 있다는 사실 때문에이 문제가 발생할 수 있다고 생각했습니다. 이 측면은 IIS가 LoadUserProfile
특성을 가진 사용자 프로필을로드 할 수 있도록하기 때문에 여전히 불분명합니다. 가상 계정에 대한 프로필이 없으면 IIS를로드 할 수 없습니다.
IIS는 Windows 사용자 프로필을로드하지 않지만, 특정 응용 프로그램 임시 데이터를 저장하는 데 어쨌든 활용할 수 있습니다
거기 말한다. SQL Express 은이를 수행하는 응용 프로그램의 예입니다. 그러나 사용자 프로필은 프로필 디렉터리 또는 레지스트리 하이브에 임시 데이터를 저장하기 위해 만들어야합니다. NETWORKSERVICE 계정의 사용자 프로필은 시스템에서 생성되었으며 항상 입니다. 그러나 고유 한 응용 프로그램 풀 ID로 전환하면 시스템에서 사용자 프로필을 만들지 않습니다. 표준 응용 프로그램 풀 (DefaultAppPool 및 Classic .NET AppPool) 에만 디스크에 사용자 프로필이 있습니다. 관리자가 새 응용 프로그램 풀을 만드는 경우 사용자 프로필이 만들어지지 않습니다.
그러나 원하는 경우 "LoadUserProfile"특성을 "true"로 설정하여 사용자 프로필을로드하도록 IIS 응용 프로그램 풀을 구성 할 수 있습니다. 이
How can I assign active directory permission to the default app pool identity
그것은 또한 응용 프로그램 풀 ID 특히, 네트워크 서비스로 작동 할 수 없음을 명시하고, 쿼리
나는 serverfault.com에서 다음 스레드를 발견 광고.
누구에게 액세스 권한을 부여 했습니까? – V4Vendetta
@ V4Vendetta 사이트를 포함하는 폴더 (모든 하위 디렉터리 및 파일 포함)에'IIS AppPool \'에'FullAccess '를 부여했습니다. –
horgh
그래, 이벤트 로그에 추가로 보여줄 것이 있습니까? – V4Vendetta