Azure Web App 배포 시 Microsoft.Data.SqlClient.SNI.x86 오류 해결기

  • 3 minutes to read

오랜만에 .NET Framework 4.8 기반의 프로젝트를 수정할 일이 생겼다. 간단한 유지보수 작업이었고, 로컬에서는 별다른 문제 없이 잘 돌아갔다. 그러나 Azure Web App의 Staging 슬롯에 게시한 직후, 예상치 못한 런타임 오류를 마주했다.

Could not load file or assembly 'Microsoft.Data.SqlClient.SNI.x86' or one of its dependencies.

문제 상황

  • NuGet 패키지 정리를 하며 Microsoft.Data.SqlClient를 최신 버전(5.x)으로 업그레이드
  • 로컬에서는 정상 동작
  • Azure Web App의 Staging 슬롯에 게시하자마자 위와 같은 오류 발생

처음엔 단순한 DLL 누락이라고 생각하고 의심되는 설정들을 하나씩 점검했지만, 결과는 변하지 않았다.


해결을 위한 시도

Microsoft.Data.SqlClient 버전 다운그레이드

최신 버전의 네이티브 DLL 로딩 문제가 의심되어, 이전 버전으로 되돌렸다.

하지만 결과는 동일했다. 여전히 같은 에러 메시지가 반복됐다.


느낌적인 느낌

로컬에서는 정상인데, Azure Web App에서는 오류가 계속된다는 점이 의아했다. 특히 소스와 패키지는 완전히 동일했음에도 불구하고, Staging 슬롯에서만 문제가 발생했다는 점이 이상했다.

마치 이전 슬롯에 남아 있는 어떤 네이티브 DLL 찌꺼기가 충돌을 일으키는 것처럼 보였다.


최종 해결

Staging 슬롯 대신 새로운 Dev 슬롯을 생성하고 동일한 코드를 게시했다. 그랬더니 거짓말처럼 정상 작동했다. 실행도 빠르고, 에러도 없었다.


원인 추정

Azure Web App의 슬롯 구조상, 종종 기존 배포에서 남은 네이티브 DLL이나 GAC 캐시, 혹은 Kudu 툴로 확인되지 않는 내부 파일이 영향을 줄 수 있다.

이런 경우 기존 슬롯에 아무리 깨끗한 코드를 올려도, 이전 파일이 완전히 정리되지 않아서 문제가 지속될 수 있다.


결론 및 교훈

  1. .NET Framework 기반 프로젝트에서는 Microsoft.Data.SqlClient 최신 버전이 항상 안전한 것은 아니다.
  2. SNI.x86.dll 오류가 Azure에서 발생하면, 패키지 정리만으로는 해결되지 않을 수 있다.
  3. 기존 슬롯에서 문제가 지속된다면, 슬롯을 새로 만들어 배포해보는 것이 빠른 해결책이 될 수 있다.

마무리

이번 경험을 통해 Azure 슬롯의 배포 동작 방식에 대해 다시 한번 배우게 됐다. 특히 .NET Framework 환경과 Microsoft.Data.SqlClient의 조합은 예상외로 민감하다는 점을 잊지 말아야겠다. 같은 코드와 설정인데도, 환경의 "잔여 상태" 하나가 전체 애플리케이션의 실행을 막을 수 있다.

앞으로도 이런 환경 이슈를 겪는 분들이 있다면, "슬롯을 새로 만들어 본다"는 조언이 작지만 확실한 도움이 될 수 있을 것이다.

VisualAcademy Docs의 모든 콘텐츠, 이미지, 동영상의 저작권은 박용준에게 있습니다. 저작권법에 의해 보호를 받는 저작물이므로 무단 전재와 복제를 금합니다. 사이트의 콘텐츠를 복제하여 블로그, 웹사이트 등에 게시할 수 없습니다. 단, 링크와 SNS 공유, Youtube 동영상 공유는 허용합니다. www.VisualAcademy.com
박용준 강사의 모든 동영상 강의는 데브렉에서 독점으로 제공됩니다. www.devlec.com