본래 고구려의 땅으로 고려초에 아선성(牙善城)이라 하였고 그 뒤 함종이라 하고 현령을 두었다. 원종 때 원나라가 이곳을 점령하여 황주(黃州)의 영현(領縣)으로 삼았다가 충렬왕 때 고려에 되돌려주었다.
조선 초기평양부에 예속되었고 경종 때 도호부로 승격하였다. 1895년 군이 되었고 1914년 행정구역개편 때 강서군에 편입되어 함종면이 되었다. 아선의 명칭은 함종면의 진산(鎭山)인 아선산에서 나왔다.
이곳에는 옛 성이 있었고 부근 굴령산(窟嶺山)에 봉수가 있어 해안지방의 오곶(吾串)ㆍ조사지(漕士池) 봉수와 연결되었다. 지리적으로 해안지방에 위치하여 고려시대에는 몽고병ㆍ홍건적ㆍ왜구 등의 침입을 받았다. 그래서 해안지방에 있던 치소를 아선산 기슭으로 옮겼는데 그 연대는 확실하지 않다.
삼화(三和)ㆍ용강(龍岡)ㆍ증산(甑山)과 함께 평양의 서부 외곽을 방어하는 구실을 하였다. 조선시대에는 이들 지역을 연결하는 도로가 발달하였으며, 해안에 해창(海倉)이 있었고 남쪽의 황룡산성(黃龍山城)에 성창(城倉)이 있어 비상시에 대비하였다.