2017-11-04 19 views
0

Clickonce 응용 프로그램의 방문 페이지 역할을하는 기본 .aspx 파일을 사용하여 IIS에서 호스팅되는 WCF 서비스가 있습니다. SVC는 파일에서 .aspx 파일이 응용 프로그램의 동일한 루트 디렉토리에 다음 폴더 구조 예 :클릭 한번 방문 페이지에 대해서는 클라이언트 인증서 팝업을 무시하고 계속해서 서비스 인증서를 요청해야합니다.

MyService 
-- MyService.svc 
-- Default.aspx 
-- Web.config 

내가이면 MyService를 검색하고 IIS에서 (내 클릭 한 번 페이지를 방문)을 Default.aspx를 보면, I 클라이언트 인증서가 실제로 한 번 클릭으로 직접 선택되어 WCF 서비스 호출 (예 : client.ClientCredentials.ClientCertificate.Certificate = UserCertificate;)에 첨부되어 있기 때문에 클라이언트 인증서를 묻는 메시지가 표시되지 않습니다.

내가 클라이언트 증명서를 무시이면 MyService 응용 프로그램을 설정하고 클라이언트 증명서를 수락 에 MyService.svc을 설정하여 IIS 관리자에서이 문제를 얻을 수 있습니다. 이 모든 예상대로 작동합니다 (Default.aspx 찾아보기 묻지 않지만 .svc 찾아보기), 배포 목적으로 & 테스트 이유, Web.config이 자동화 할 싶습니다. 나는 행운을 빌면서 다음을 시도했다.

<location path="MyService.svc"> 
<system.webServer> 
    <security> 
    <access sslFlags="SslRequireCert" /> 
    </security> 
</system.webServer> 

내가 "None"에이면 MyService를 설정하여 있으리라 믿고있어

<location path="MyService"> 
<system.webServer> 
    <security> 
    <access sslFlags="None" /> 
    </security> 
</system.webServer> 

처음을 망쳐 놨어요.

내 svc를 다른 폴더로 옮기고 IIS의 하위 응용 프로그램으로 옮길 때 비슷한 문제가 발생했습니다.

도움을 주시면 감사하겠습니다.

+0

의 라인을 따라 뭔가를 사용하여이 ApplicationHost.config에 XML 구성을 쓴 내 고급 설치 프로젝트에 사용자 지정 작업을 추가하여이 문제를 해결 결국 파일 탐색기에서 경로를 열고 web.config를 확인하십시오. 당신이 만든 모든 변화가있을 것입니다. 해당 섹션을 복사하여 테스트 시나리오에 붙여 넣을 수 있어야합니다. web.config –

+0

@MuqeetKhan 작동하지 않습니다. Windows 탐색기에서 탐색 할 때 web.config에 대한 변경 사항이 표시되지 않습니다. – DylSmith

답변

0

난 당신과 같이 IIS 관리자에서 변경 한 후

using (ServerManager manager = new ServerManager()) 
     { 
      var config = manager.GetApplicationHostConfiguration(); 

      try 
      { 
       ConfigurationSection accessSection = config.GetSection("system.webServer/security/access", site); 

       if (accessSection != null) 
       { 
        Console.WriteLine("Opened app host config successfully."); 
        accessSection["sslFlags"] = @"None"; 
       } 

       accessSection = config.GetSection("system.webServer/security/access", "Default Web Site/MyService/MyService.svc"); 

       if (accessSection != null) 
       { 
        Console.WriteLine("Opened app host config successfully."); 
        accessSection["sslFlags"] = @"Ssl, SslNegotiateCert, SslRequireCert"; 
       } 

       manager.CommitChanges(); 
       Console.WriteLine("Successfully committed changes"); 
       Console.ReadLine(); 
      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Failed to open the app host config."); 
      } 
     }