원인이 다양한 에러 중의 하나가 500.30 에러입니다. 500에러가 대부분 그렇지만 일단 '이벤트 뷰어'로 상세한 정보가 있는지 확인해야 합니다. 이 포스팅은 다른 원인을 발견할 때마다 추가하고 있습니다. 1. 디렉터리 없음 루트 디렉터리를 찾지 못해 발생하는 오류입니다. exception code = '0xe0434352'. System.IO.DirectoryNotFoundException ASP.NET의 경우 'wwwroot'가 기본 폴더인데 이게 없을 때 주로 발생합니다. (만약 루트 디렉터리를 변경했다면 변경한 디렉터리가 없으면 에러가 납니다.) 위 스크린샷의 경우 루트디렉터리가 'wwwroot\production-home'인데 이것을 안 만들어서 이 에러가 발생했습니다. 2. SQL 서버 연결..
'VS Code(Visual Studio Code)'에서도 약간의 설정만 하면 'ASP.NET Core 6'를 빌드할 수 있습니다. 0. 준비 'VS Code'를 열기 전에 '.NET 6 SDK'가 설치해야 합니다. Microsoft Dawnload : .NET 6.0 SDK 'VS Code'를 열고 확장에서 'C#'을 검색하여 설치합니다. marketplace - C# 1. 프로젝트 열기 비주얼 스튜디오에서 생성한 'ASP.NET Core 6' 프로젝트의 루트 폴더를 지정하여 프로젝트를 열어 줍니다. 2. 디버깅을 하기 위한 'launch.json' 파일 생성 원래 "빌드 및 디버그 자산이 없습니다" 같은 메시지가 나왔었는데... 어느 순간 사라졌습니다. 이제는 '실행 및 디버그'창에서 'launch...
이전 포스팅에서 JWT(JSON Web Token)를 발급하고 인증하기 위한 처리를 했습니다. 이 포스팅에서는 이전 포스팅에서 만든 인증 처리를 연결하는 작업을 합니다. 연관글 영역 이 시리즈는 'ASP.NET Core 6'에서는 인증 처리를 이런 식으로 하는구나~~~ 라는 걸 알려주기 위한 목적이라 설계가 난잡합니다. 0. 구조 이 프로젝트에서는 'SQLite + Entity Framework'를 사용합니다. 이렇게 구성하면 DB를 사용하지 않을 때는 'InMemory'를 사용하여 메모리DB를 사용할 수 있어 이식성이 좋아서입니다. 연결정보를 받으면 코드 퍼스트(Code First) 방식으로 DB에 연결하여 테이블을 생성하고 데이터를 관리하게 됩니다. 누겟에서 Microsoft.EntityFramewo..
'OAuth2'는 인증방식을 표준화해둔 프로토콜입니다. 이것 밑에 토큰을 발급하고 인증하기 위한 시스템을 만들어 넣어야 하는데.... Json으로 토큰을 발급하고 인증하기 위한 방법의 하나가 'JWT(Json Web Tokens) 인증'입니다. 다른 프로젝트에서는 'IdentityServer4'를 이용하여 'JWT'을 발급하고 인증하는 것을 했었는데 이 포스팅에서는 직접 'JWT'를 발급하고 사용하는 방법을 다룹니다. 1부는 JWT를 발급하고 확인하는 것을 구현하고 2부에서는 이렇게 만든 JWT 사용하는 방법을 다룹니다. 연관글 영역 0. 프로젝트 생성 및 구성 프로젝트를 'ASP.NET Core'로 생성합니다. 'ASP.NET Core'에서 인증처리를 다음과 같은 구조를 가집니다. 미들웨어를 주입하면 ..
ASP.NET Core에서 SSL 테스트를 하다 보니 접속이 되다 말다 합니다....? 1. 증상 확인 정확하게는 프로젝트를 생성했을 때는 됐다가 포트만 바꾸면 SSL포트에 접속이 안 됩니다. 처음에는 되니 방화벽 문제는 아니죠. 2. 원인 여기저기 검색하다가 보니 "IIS Express"의 SSL포트는 정해진 포트만 쓸 수 있다는 글이 있습니다. 그래서 MSDN을 뒤져보다 보니..... 참고 - Running IIS Express without Administrative Privileges It configures HTTP.SYS to reserve ports 44300 through 44399 for SSL. Incoming SSL requests that use localhost and one of..
전편에서 했던 "API 결과 리턴 공통화"는 좀 급하게 만들다 보니 빠진 것이 있는데......가장 중요하다고 할 수 있는 '결과 처리 클래스'가 공통화가 덜돼서 최종 결과를 출력하는 'ApiResultReady.ToResult()'를 호출할 때 출력할 객체를 따로 지정해야 했습니다. 이번엔 이 불편함을 고쳐봅시다. 1. 'ApiResultBaseModel' 수정'ApiResultReady'에서 하던 성공 실패 여부를 처리하기 위한 기능을'ApiResultBaseModel'으로 옮여야 합니다. 성공 문자를 저장해두고 이것과 비교하는 함수를 추가합니다. 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474..
API의 결과를 줄 때 성공하면 약속된 모델을 전달하고 실패하면 실패에 약속된 모델을 전달하는 것이 일반적인 방법입니다.이 방법의 문제는 성공했을 때와 실패했을 때 구분이 매번 똑같을 수 없으니 프론트엔드(Front-end)에서는 이것을 구분하기 위한 작업을 그때그때 해야 합니다. 그래서 API결과를 알리기 위해 고정된 값을 하나 전달해주는 것이 좋습니다.API 결과용 베이스를 만들어 API를 리턴할때는 이 베이스를 상속받은 모델을 리턴하는 것이죠. 1. 필요한 정보API결과는 다음과 같은 경우가 있습니다. 성공 : 의도대로 API가 성공한 경우실패 : 서버에서 실패로 판단하는 경우. 백엔드(Back-end)와 협의된 정보를 전달한다.캐치 가능한 오류 : 서버에서 캐치한 오류(try~catch)알 수 없..
DB를 먼저 작성하거나 다른 프로젝트에 의해 생성된 DB를 사용하는 경우 DB 퍼스트(DB First) 방식을 사용합니다. 연관글 영역 프로젝트는 'ASP.NET Core 2'로 구성되어 있습니다. 이 프로젝트는 sqlite를 기준으로 작성되었습니다. 1. 왜 DB 퍼스트를 사용하는가? 전통적으로 프로젝트가 진행되면 DB를 먼저 만들고 시작했습니다. 예정에는 여기에 직접 쿼리를 날리거나 DBA가 만들어놓은 프로시저를 호출해서 사용했죠. EF(Entity Framework)와 같은 ORM(Object-Relational Mapping) 프레임웍들이 생기면서 모델을 만들어 접근하는 방식을 사용하기 시작합니다. 그렇다면! 기존 방식을 사용하는 프로젝트는 EF를 어떻게 연결하느냐? 이미 만들어져있는 DB의 정보..
드디어 EF(Entity Framework)를 연결합니다.이 프로젝트는 코드 퍼스트(Code First)라 해당 코드가 들어 있지만다른 방식을 사용한다면 코드 퍼스트 부분은 필요 없습니다. [ASP.NET Core] 빈 프로젝트 세팅 (1) - 'index.html'을 시작페이지로 설정하기[ASP.NET Core] 빈 프로젝트 세팅 (2) - WebAPI 설정 [ASP.NET Core] .NET Core로 구현한 SPA(Single Page Applications)(1) - 기초[ASP.NET Core] .NET Core로 구현한 SPA(Single Page Applications)(2) - Ajax공통 기능, 데이터 바인드 처리[ASP.NET Core] .NET Core로 구현한 SPA(Single P..
WebAPI를 쓴다면 스웨거를 빼놓을 수 없습니다.스웨거는 WebAPI 문서를 자동화 해주는 해주는 라이브러리입니다.( 참고 : 위키백과 - 스웨거 (소프트웨어) ) 문서화뿐만 아니라 바로 테스트도 할 수 있으므로 프론트엔드 개발자와 소통이 편해지죠. [ASP.NET Core] 빈 프로젝트 세팅 (1) - 'index.html'을 시작페이지로 설정하기[ASP.NET Core] 빈 프로젝트 세팅 (2) - WebAPI 설정 [ASP.NET Core] .NET Core로 구현한 SPA(Single Page Applications)(1) - 기초[ASP.NET Core] .NET Core로 구현한 SPA(Single Page Applications)(2) - Ajax공통 기능, 데이터 바인드 처리[ASP.NE..