기본 콘텐츠로 건너뛰기

라벨이 WCF인 게시물 표시

[C#] HTTPS로 접속하기

대기업 대상으로 프로그램 개발(SI)을 하고 있는데 예전에는 프로그램 기능에 대해서만 검수를 했었는데 요즘은 프로그램 보안에 대한 요구도 추가로 하고 있습니다. 이와 같이 보안이 강화됨에 따라 기존에 HTTP 프로토콜로 접속 가능하던 사이트들도 HTTPS로 바꾸고 있습니다. 따라서 웹 서비스에 접속하는 클라이언트도 HTTP, HTTPS 둘 다 지원해야 합니다. 아래 코드는 설정에서 접속할 URL을 읽어와 EndpointAddress를 생성합니다. BaseAddress = CommonLib.Common.GetConfigString("BaseClientAddress", "URL", ""); EndPoint = new EndpointAddress(string.Format("{0}/Service.svc", BaseAddress)); EndPoint Scheme으로 접속해야 할 프로토콜을 확인할 수 있습니다. 접속 프로토콜에 따라 바인딩을 생성하면 됩니다. 아래는 CustomBinding 예제 클래스입니다. public class CustomHttpBinding : CustomBinding { private readonly bool useHttps; private readonly bool useBinaryEncoding; private readonly bool useCompression; private readonly HttpTransportBindingElement transport; public CustomHttpBinding(bool useHttps, bool binaryEncoding = true, bool compressMessages = false) { this.useHttps = useHttps; transport = useHttps ? new HttpsTransport...

WCF를 IIS에서 호스팅하기

개발 중인 프로그램을 PoC(Proof of Concept) 환경에 맞게 수정 중에 있습니다. PoC를 수행하는 장소의 여건 상 서버를 두지 못하여 서버에서 운영하던 WebService를 로컬 장비에서 운영하기로 했습니다. 먼저 NGINX로 WebService를 구동하려고 했는데 도무지 WCF에 대한 환경 설정을 할 수가 없어서 포기하고 IIS로 하기로 했습니다. (NGINX에서 WCF WebService를 운영하는 방법을 알고 계시면 공유 부탁합니다.) 로컬 장비에(Windows 10)에서 IIS를 설치( [참조 사이트] )하고 사이트를 생성하여 접근하니 아래와 같은 오류가 발생했습니다. 이 구성 섹션은 이 경로에서 사용할 수 없습니다. 섹션이 부모 수준에서 잠겨 있는 경우 이 오류가 발생합니다. 이러한 잠금은 기본적으로 설정(overrideModeDefault="Deny")되거나 overrideMode="Deny" 또는 레거시 allowOverride="false"와 함께 위치 태그를 사용하여 명시적으로 설정합니다. 열심히 구글링해서 찾아본 해결책들은 아무런 도움이 되지 않았습니다. 퇴근 시간이 다가올수록 짜증도 같이 올라옵니다. 여러가지 해결책들 중에서 WCF 서비스를 활성화 시켜보라 는 글을 보고 윈도우즈 기능 켜기/끄기 에서 WCF 서비스를 찾아 HTTP 활성화 를 체크하고 사이트에 접근하니 드디어 제대로 동작합니다. 기존에 사용하던 MS-SQL Server도 설치하지 못하기 때문에 SQLite로 변경하기로 했습니다. Web.config에서 connectionString 섹션을 SQLite에 맞게 변경합니다. <connectionStrings> <add name="ARS" providerName="System.Data.SQLite" connectionString="data ...