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에 맞게 변경합니다.
1
2
3
4
<connectionStrings>
<add name="ARS" providerName="System.Data.SQLite" connectionString="data source=ars.db"/>
<add name="ARSProject" providerName="System.Data.SQLite" connectionString="data source=ars_{0}.db"/>
</connectionStrings>
기존 MSSql Server의 데이터를 SQLite로 변환해야 합니다.
이 많은 데이터를 어떻게 SQLite로 변환하지?
생각하다 포기할 뻔했습니다.
다행히 MSSQL 데이터를 SQLite로 변환해 주는 프로그램이 있어 한번에 변환하였습니다.
SqlConverter
SQLite 데이터까지 준비하여 프로그램을 실행하니 MSSQL과 SQLite의 쿼리 문법이 달라 오류가 발생합니다. 산 너머 산입니다.
기존 MSSQL 쿼리를 SQLite에 맞게 수정해줍니다. 아래는 MSSQL과 SQLite간 서로 대응하는 키워드들입니다.
| MSSQL | SQLite |
| isnull() | ifnull() |
| select top 5 * from [Table_Name] | select * from [Table_Name] limit 5 |
| newid() | hex(randomblob(16)) |
| getdate() | datetime(‘now’,’localtime’) |
| convert() | cast() |
| scope_identity() | last_insert_rowid() |
| select * into copied from origin | create table copied as select * from origin |
| charindex() | instr() |



