2013-12-16 2 views
4

준비 서버에서 호스팅되는 WCF 서비스에 액세스하려고하면 다음과 같은 오류가 발생합니다.WCF 오류 "검색 기준을 사용하여 여러 X.509 인증서를 찾음"

"StoreName 'My', StoreLocation 'LocalMachine', FindType 'FindBySubjectName', FindValue 'StagingServer001'등의 검색 기준을 사용하여 여러 X.509 인증서를 발견했습니다.보다 구체적인 찾기 값을 제공하십시오."

나는 다음과 같은 URL에 액세스 및 오류 위 얻을려고 : 나는 그것을 삭제 저장소에 인증서를 찾을 수있는 방법을

http://stagingserver001/MyService1.svc 

사람이 나를 인도 시겠어요? 또는 내가 WCF

의 구성에서

을 변경해야 할 사항에 나는 인증서 저장소에 당신에게 문제를 생각하는 WCF 서비스

<behaviors> 
     <endpointBehaviors> 
     <behavior name="endpointCredentialBehavior"> 
      <clientCredentials> 
      <clientCertificate findValue="SPLEBUSSTG02" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" /> 
      <serviceCertificate> 
       <defaultCertificate findValue="772f3fdf2496c9750be3b0713003b47b15dfde96" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> 
       <authentication certificateValidationMode="PeerOrChainTrust" /> 
      </serviceCertificate> 
      </clientCredentials> 
     </behavior> 
     </endpointBehaviors> 
     <serviceBehaviors> 
     <behavior name="SecurityBehavior"> 
      <serviceMetadata httpGetEnabled="True" /> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      <serviceCredentials> 
      <serviceCertificate findValue="772f3fdf2496c9750be3b0713003b47b15dfde96" storeLocation="LocalMachine" storeName="My" x509FindType="FindByThumbprint" /> 
      <clientCertificate> 
       <certificate findValue="SPLEBUSSTG02" storeLocation="LocalMachine" storeName="My" x509FindType="FindBySubjectName" /> 
       <authentication certificateValidationMode="PeerOrChainTrust" /> 
      </clientCertificate> 
      </serviceCredentials> 
     </behavior> 
     <behavior> 
      <!-- To avoid disclosing metadata information, set the values below to false before deployment --> 
      <serviceMetadata httpGetEnabled="false" httpsGetEnabled="false" /> 
      <!-- To receive exception details in faults for debugging purposes, set the value below to true. Set to false before deployment to avoid disclosing exception information --> 
      <serviceDebug includeExceptionDetailInFaults="false" /> 
      <ServiceErrorHandler /> 
     </behavior> 
     </serviceBehaviors> 

    </behaviors> 
+0

코드 및 설정 파일의 스크린 샷을 게시하지 마십시오. 읽기가 어렵습니다. 코드 또는 구성 파일을 질문에 붙여 넣으십시오. – Tim

+0

완료, 코드 – Nirman

답변

12

의 Web.config의에서 가져온 관련 코드를 검색 할 수 있습니다. 제발 다음

  1. 실행 MMC
  2. 메뉴 파일은/선택 radiobox 로컬 컴퓨터
  3. 인증서 (로컬 컴퓨터)/개인이/인증서보다, 트 리뷰 선택 인증서에서
  4. 에서 스냅을-제거를
  5. 거기에 나열된 모든 인증서를 살펴보십시오. 이중화가 있어야합니다. 가능하면 enter image description here

은 중복 제거하십시오 (중복이 첫번째보기에서 볼 권리, 각 인증서를 두 번 클릭이 아닌 경우, 제목 속성을 찾을 수 Detatis 탭으로 이동). 다른 경우에는 설정에서 FindByThumbprint 기준을 정의하십시오

+0

으로 캡쳐 화면으로 바뀌 었습니다. 동일한 문제가있었습니다. 내 복제본을 발견하고 삭제했으며 여전히 동일한 오류 메시지가 나타납니다. 서버를 재부팅 한 IISReset가 서버 및 로컬 시스템의 모든 캐시를 지웠는가? 아무것도. 모든 계정에 의해 인증서가 사라졌지만 그것은 여전히 ​​IIS에서 "발견"되고 있습니다. – jtrohde

+0

인증서의 올바른 ID로 FindByThumbprint 옵션을 사용하는 것이 좋습니다. –