테스트를 편하게 하려고 'ASP.NET Core'프로젝트에 프론트엔드(Front-end)를 넣어놨더니 개시하면 프론트엔드도 같이 빌드됩니다. 그래서 개시할 때마다 시간이 너무 오래 걸립니다.... 프론트엔드는 따로 관리하는 것이 편하므로 빌드도 따로 하여 배포하는 게 편한데 이러면 너무 불편하죠. 연관글 영역 해결 방법 의외로 해결 방법은 복사/붙여넣기 했던 코드에 나와있는데..... 프로젝트를 더블클릭하고 'Target Name="PublishRunWebpack"'로 되어 있는 부분을 찾습니다. 이 부분이 퍼블리싱이 끝나면 동작하는 내용입니다. 이 부분을 주석 처리하면 프론트엔드는 퍼블리싱하지 않습니다. 다시 게시하기 주석처리가 됐으면 다시 게시해 봅시다. 이제 게시를 해도 프론트엔드는 빌드되지 않습니..
1. 에러의 발견 포스트그레스 사용 시 다음과 같은 에러가 나는 경우가 있습니다. System.InvalidCastException: ''timestamp with time zone' literal cannot be generated for Local DateTime: a UTC DateTime is required' 포스트그레스 프로바인더가 6.x 버전부터 시간대가 포함된 타임스템프(timestamp with timezone)로 매핑해야 한다고 합니다. 2. ' DbContext'에서 설정하기 간편하게 해결하는 방법은 'DbContext'를 생성할 때 레거시 모드를 설정해 주는 것입니다. public ModelsDbContext_Postgresql(DbContextOptions options) : ba..
전 포스팅에서 .NET기본 로거를 사용하는 방법을 알아봤습니다. 로거를 파일로 출력하려면 외부 라이브러리를 사용해야 합니다. 이 포스팅에서는 'NReco.Logging.File'를 이용하여 로그를 파일로 출력합니다. 연관글 영역 1. 라이브러리 설치 .NET에서 로그를 파일로 내보내는 기능은 외부 라이브러리를 쓰라고 되어 있습니다. (더 이상 기본기능으로 제공하지 않음) 이 포스팅에서는 'NReco.Logging.File'를 사용합니다. 2. 파일 출력 설정 파일 출력을 위해 파일명을 지정하고 로거빌더(LoggingBuilder)에서 출력 형식을 지정해 줍니다. 2-1. 'StartUp.cs'를 사용하지 않는 경우 서비스에서 'AddLogging'을 이용하여 외부 빌더를 설정해 줍니다. builder.S..
.NET 기본 로거가 종속성 주입이 귀찮아서 안 쓰고 있었는데... 장기적으로 봤을 때 'log4net'이 더 관리하기 힘는 거 같아서 이번 기회에 바꿔봤습니다 ㅎㅎㅎ 'ASP.NET Core'는 종속성 구성이 되어 있으므로 이 포스팅은 간단한 구현을 위해 'ASP.NET Core'를 이용합니다. 다른 플랫폼별로 따로 포스팅할 예정입니다. 연관글 영역 1. 로거(logger) 사용하기 종속성에 로거가 포함되어 있으므로 컨트롤러에서 로거를 전달받아 사용하면 됩니다. [Route("api/[controller]/[action]")] [ApiController] public class TestController : ControllerBase { /// /// 사용할 로거 /// private ILogger _..
.NET에서 'out'이나 'ref' 한정자를 쓰는데 다음과 같은 에러가 났습니다. A property or indexer may not be passed as an out or ref parameter 참조를 반환하지 않는 속성 또는 인덱서는 out 또는 ref 값으로 사용할 수 없음 1. 원인 MS가 제공하는 오류코드만 보고도 확인할 수 있는 오류입니다. 참고 : MS Learn - 컴파일러 오류 CS0206 겟터/셋터(getter/setter) 접근자를 이용하여 속성을 만들고 이것을 'out'이나 'ref' 한정자로 전달하려고 하면 발생하는 오류입니다. 아직도 종종 하는 실수인데..... .NET은 겟터/셋터(getter/setter) 접근자를 편하게 처리하기 위해 변수명을 그대로 사용할 수 있게 ..
모델에 FK(foreign key)를 연결하려고 상호 참조를 했더니 다음과 같은 에러가 납니다. Exception: Newtonsoft.Json.JsonSerializationException: Self referencing loop detected for property '[모델명]' with type '[네임스페이스]'. Path '[에러나 개체]'. at Newtonsoft.Json.Serialization.JsonSerializerInternalWriter.CheckForCircularReference(JsonWriter writer, Object value, JsonProperty property, JsonContract contract, JsonContainerContract container..
EF(Entity Framework, 엔트리 프레임워크)에서 데이터의 무결성을 확보하기 위해 '낙관적 동시성(Optimistic Concurrency)'을 어떻게 구현하는지 알아봅시다. 0. 낙관적 동시성을 쓰는 이유 낙관적 동시성을 쓰는 이유를 알려면 알아두어야 할 내용이 있습니다. 0-1. 비관적 동시성 DB에서 데이터의 일관성유지를 위해 락(lock)을 거는 방법이 있습니다. 이렇게 락을 거는 방법을 '비관적 동시성(Pessimisitc Concurrency)'이라고 합니다. 이 방법은 누군가 데이터를 수정하는 동안 다른 사람은 수정할 수 없게 만드는 방법입니다. 다른 사람이 수정할 수 없으니 절대적인 데이터 무결성이 보장된다는 장점이 있습니다. 하지만 동시에 여러 사람이 수정하려는 경우 나머지 사..
포스트그래SQL(PostgreSQL)에서 물리적인 저장위치를 지정하려면 크게 2가지 방법이 있습니다. 포스트그래SQL이 사용하는 기본 저장 폴더를 변경하거나 (참고 : [PostgreSQL] 윈도우(Windows)에서 기본 데이터 폴더 변경 ) 테이블스페이스(Tablespaces)를 생성하여 지정해야 합니다. 이 포스팅에서는 'pgAdmin'을 이용하여 테이블스페이스를 만들고 지정해 보겠습니다. 1. 테이블스페이스(Tablespaces) 생성하기 개체 탐색기(Object Explorer)에서 테이블스페이스 트리를 찾습니다. 오른쪽 클릭 > Create > Tablespace... 을 선택합니다. 생성할 이름(Name)을 넣고 Definition > Location 에 물리 경로를 적어줍니다. 생성된 테이..
'JsonIgnore'속성은 JSON으로 출력할 때 무시하게 해주는 속성입니다. 해당 속성으로 지정되어 있으면 JSON으로 출력할 때 해당 필드가 없어야 합니다. 그런데 이 속성이 제대로 적용이 될 때가 있고 안될 때가 있는 겁니다...????? 1. 원인을 찾아서~ 원인은 의외로 간단한데...... 'JsonIgnore'은 두 군데에 선언이 되어 있습니다. System.Text.Json.Serialization Newtonsoft.Json 만약 자신이 'System.Text.Json.Serialization'를 사용 중인데 'Newtonsoft.Json.JsonIgnore'를 사용한다거나 반대로 ''Newtonsoft.Json'을 사용 중인데 'System.Text.Json.Serialization'를..
1. 증상 포스트그레SQL(PostgreSQL)을 설치하고 접속했는데 에러가 납니다. 그런데 메시지 깨져서 무슨 소리인지 모르겠습니다. 분명 언어 설정과 같은 문제일 텐데 DB의 언어설정을 아무리 수정해도 바뀌지가 않습니다. 2. 해결 방법 생성한 DB의 설정을 바꾸는 게 아니라 설치된 포스트그래SQL의 설정을 바꿔야 합니다. 포스트그래SQL이 설치된 폴더의 '[버전 번호]\data\postgresql.conf' 파일을 열어줍니다. (예> D:\Program Files\PostgreSQL\15\data ) 'lc_messages'를 'C'로 바꿔줍니다. 이제 포스트그래SQL의 서비스를 다시 시작해 줍니다. 마무리 이게 한국어가 없어서 깨지는 걸까요? 있는데 인코딩 문제일까요? 저는 모르겠습니다 ㅎㅎㅎㅎ ..