2011-08-02 4 views
23

"Windows Communication Foundation 4 Step By Step"의 일부 WCF 예제를 사용하고 있습니다. 서비스가 casini에서 호스팅되는 한 내 결과 응용 프로그램은 잘 실행됩니다. 로컬 IIS에 서비스를 배포 할 때 실패합니다. IIS에 배포 할 때 Internet Explorer에서 svc 페이지를 탐색 할 수 있습니다. 그거야.IIS에 배포 할 때 예외 : 'IIS APPPOOL DefaultAppPool'사용자가 로그인하지 못했습니다.

41 페이지의 책에 따르면, 응용 프로그램 풀 계정은 내 데이터베이스에서 db_owner 역할의 구성원이어야합니다. 저자는 서비스의 올바른 주소를 확인한 후 (이미 그렇게 했음) 앱 풀 계정의 권한을 확인하는 방법을 제안합니다.

내 WCF 서비스를 호스팅하는 응용 프로그램 풀에서 어떤 계정을 사용하는지 확인하려면 어떻게합니까? 현재 기본 응용 프로그램 풀과 IIS APPPOOL \ DefaultAppPool을 사용하는 것은 db_owner 역할에 있습니다. IIS APPPOOL \ ASP.NET v4.0은 db_owner 역할도합니다.

예외는 ...

System.Data.SqlClient.SqlException: Login failed for user 'IIS APPPOOL\DefaultAppPool'. 

이 문제를 어떻게 해결합니까? 감사!

답변

44

솔루션 here 발견 :

  • 귀하의 응용 프로그램 풀 (을 DefaultAppPool)을 선택

    • 열기 IIS
    • 이중 연결에서 사용자의 PC 이름을 클릭
    • 클릭 응용 프로그램 풀을 그 다음에 행동에서
    • 고급 설정을 마우스 오른쪽 단추로 클릭하고
      • 로 이동합니다. 모델 섹션 및
      • 신원 확인을 클릭하십시오.
      • 이제 NetworkService를 선택하십시오.
  • +0

    이 솔루션에 대해 많은 의견을 주셔서 감사합니다.이 문제에 대한 설명을 제공해주십시오. –

    +3

    NetworkService를 선택해도 도움이되지 않았습니다. 문제는 ID에서 사용자 지정 계정 옵션을 선택하고 내 PC 사용자 이름과 암호를 입력하는 것이 었습니다. . – ParPar

    +1

    방향 주셔서 감사합니다. 이제 오류가 발생하기 시작했습니다 : 사용자 'WORKGROUP \\ machine $'에 대한 로그인에 실패했습니다. : –

    1

    나는 동일한 문제가있었습니다. 문제는 "IntegratedSecurity = True;"였습니다. 내 연결 문자열에서하지만 난 SQL 인증을 사용하고 동시에 자격 증명을 전달했다. IntegratedSecurity를 ​​제거하고 모든 것이 작동했습니다.

    0
    if not exists 
    (select * from sys.server_principals where name='IIS APPPOOL\DefaultAppPool') 
        create login [IIS APPPOOL\DefaultAppPool] from windows; 
    
    +2

    미래의 사용자를위한 도움 – LcSalazar

    0

    Windows 인증을 사용하고 있고 다음 연결 문자열의 모든 사용자 이름 암호를 언급하지 않는 경우 삭제해야 할 우선 : 때를 : 당신은 로컬 호스트를 통해 코드를 실행하면 어떻게됩니까

    localhost에서 wcf 테스트 클라이언트를 실행하면 로컬 디버그 모드 응용 프로그램이 계정 서비스로 데이터베이스를 호출하므로 데이터베이스와 통신 할 수 있습니다. devenv.exe가 사용자 계정으로 실행되기 때문에 데이터베이스에 대한 액세스 권한이 있습니다.

    그러나 IIS에 웹 서비스를 배포 할 때. 이제 귀하의 계정이 아닌 IIS에서이 서비스가 실행된다는 것을 이해하십시오. 따라서 Windows 인증을 위해 SQL Server에 액세스하려면 IIS 서비스에 액세스 권한을 할당해야합니다. 액세스 권한 문제로 인해 웹 서비스가 SQL 서버와 통신 할 수 없습니다.

    Windows 인증을 사용하여 데이터베이스에 연결하는 경우 IIS 응용 프로그램 풀 설정을 변경하기 만하면됩니다. IIS 응용 프로그램 풀의 ID를 로컬 시스템으로 변경해야합니다.다음은

    윈도우 인증 WCF의 단계를 다음과 같습니다 • 열기 IIS가 • 선택 이중 • (+ R (실행)이 다음 inetmgr을 입력 창, 다음 확인을 클릭) 연결에서 • 클릭 응용 프로그램 풀 당신의 PC 이름을 클릭하여 응용 프로그램 풀 (DefaultAppPool) • 오른쪽의 작업에서 고급 설정 : • 프로세스 모델 섹션으로 이동하여 으로 이동합니다. • ID를 클릭합니다. • 이제 LocalSystem을 선택하십시오.

    이제 SQL 서버 관리 스튜디오를 엽니 다. open run-> ssms를 입력 한 다음 OK를 누릅니다. windows 인증 계정을 사용하여 로그인합니다. . 열린 보안 탭 확장 로그인 탭 그러면 계정을 볼 수 있습니다. 계정 의

    이제 개방 특성은 다음 확인을 선택한 데이터베이스 클릭에 사용할 역할 구성원 서비스를 확인 후 을 연결하기 원하는 데이터베이스를 선택 을 userMapping로 이동합니다.

    add Trusted_Connection = True; 속성을 사용합니다. & 웹 서비스를 배포하십시오. 응용 프로그램 풀을 다시 시작하십시오.

    이제 데이터베이스에 연결할 수 있습니다.

    관련 문제