CSharp 14

ASP.NET CORE HTTP health Check

asp.net core에서 health Check는 해당 어플리케이션이 정상적으로 작동하는지 확인하는 기능입니다.위 기능으로는 크게 아래와 같이 활용 가능합니다.애플리케이션의 가용성 모니터링: Health Check는 애플리케이션이 정상적으로 작동하는지 확인하는데 사용됩니다. 이를 통해 시스템이 언제든지 사용할 수 있는지 여부를 판단할 수 있습니다.종속 서비스 상태 확인: 데이터베이스, 캐시, 외부 API 등 애플리케이션이 의존하고 있는 서비스들의 상태를 확인할 수 있습니다. 만약 종속 서비스 중 하나가 비정상 상태라면, 이를 즉시 감지하고 조치를 취할 수 있습니다.컨테이너 오케스트레이션 도구 통합: Kubernetes와 같은 컨테이너 오케스트레이션 도구에서는 애플리케이션의 상태를 확인하기 위해 Heal..

c#/ASP.NET CORE 2024.05.20

ASP.NET CORE 전역 에러 처리 Global Error Exception

asp.net core에서는 미들웨어를 통해서 에러를 전역에서 관리할 수 있습니다. 그냥 일반적인 try catch문을 사용해도 무방하지만 이러한 방법을 쓰면 에러를 중앙에서 관리하기 때문에 더 에러 처리에 대한 프로세스 관리를 쉽게 할 수 있습니다. 구성 방법은 아래와 같습니다. public class NotFoundException : ApplicationException { public NotFoundException(string name, object key) : base($"{name}({key}) was not found") { } } 위처럼 오류가 날만한 부분에 생성할 Exception 클래스를 하나 생성하고 ApplicationException 클래스를 상속받습니다. public class..

c#/ASP.NET CORE 2024.03.09

ASP.NET CORE AutoMapper 사용법

ASP.NET CORE를 사용하다 보면 객체 매핑을 하는 코드를 계속 작성해야 하는 번거로움이 있습니다. 이럴때 AutoMapper라는 확장을 설치하여서 객체 매핑의 번거로움을 줄입니다. 위의 AutoMapper.Extensions.Microsoft.DependencyInjection 패키지를 설치하면 AutoMapper의 기능들을 사용 할 수 있게됩니다. AutoMapper는 기본적으로 Profile클래스를 상속받아서 해당 상속받은 클래스에서 매핑을 할 model객체와 dto를 CreateMap 이라는 메서드를 통하여 컨테이너에 등록 할 수 있습니다. public abstract class BaseCountryDto { [Required] public string Name { get; set; } pu..

c#/ASP.NET CORE 2024.03.05

C# webview2 확장 사용하는 법 웹뷰 확장 설치(feat.웹뷰 adblock설치하기)

평소에 브라우저를 사용하다보면 확장을 설치하여 사용하는 경우가 많습니다. 이를 C# webview에도 똑같이 적용이 가능합니다. 바로 webview2 에 있는 AddBrowserExtensionAsync() 메서드를 활용하면 됩니다. 위 메서드는 비교적 최근에 추가 된듯하여 해당 메서드에 대한 정보가 많이는 없습니다. 사용방법은 webview2객체에 있는 위 메서드에다가 edge에서 사용하는 확장에 대한 경로 경로를 string 값으로 넣어주면 되는데 이때 제일 중요한게 하나 있습니다. 바로 해당 경로에 mainfest.json 파일이 있어야합니다. 저 같은 경우는 로컬환경에 아래와 같이 엣지에 설치된 확장의 경로에 해당 manifest.json 파일이 있습니다. 이렇게 경로를 찾은 다음 아래 코드를 실..

c#/.net 2024.01.15

C# fatal error encountered attempting to read the resultset 오류 처리

C# 클라이언트 프로그램으로 대량의 데이터를 Insert 시키는 과정에서 'fatal error encountered attempting to read the resultset' 라는 문구를 띄우면서 에러가 발생하였다. 해당 문구를 검색해보니 my sql에 connection을 하고 어떠한 이유에서든지 connection이 끊기게 되면 해당 에러문구를 발생시키는 듯 합니다. 다른 사람들의 케이스로는 1.my sql 버젼 문제 2.max connection pool 문제 3.time out 문제 이렇게 있는듯 합니다. 저의 경우에는 db tool 에서는 해당 쿼리가 제대로 실행되는데 c#프로그램에서 돌리면 에러가 발생하므로 c#코드에서 mysql을 connection하는 문제라는 것이 유추 되었습니다. 처..

c#/.net 2024.01.04

ASP.Net Core MVC Entity Frame work 사용하기 -1

Entity FrameWork 는 Microsoft 에서 제공하는 ORM 프레임 워크 입니다. ORM을 사용하면 따로 Ado.Net 처럼 쿼리를 작성 하지 않아도 데이터를 처리 할 수 있습니다. 따라서 개발자가 쿼리작성보다 개발에 더 집중 할 수 있습니다. 다만 속도가 느리고 마이그레이션이 잘 안되는 경우가 있습니다. entity framework 의 접근방법 구분 entity framework에서 의 접근방법은 3가지로 구분 되어 있는데 DB Frist, Code First, Model First가 있습니다. DB First 는 db를 먼제 생성하고 접근하는 방법이며 Code First는 코드에서 모델을 먼저 작성해서 접근하는 방법 Model Frist는 Visual Studio에서의 Entity Da..

c# 2023.04.17

WPF DataTemplate과 ControlTemplate ItemsPanelTemplate

1.DataTemplate: DataTemplate은 데이터 개체의 시각적 표현을 정의하는 데 사용되는 템플릿입니다.목록이나 그리드에 항목 모음을 표시하는 것과 같이 특정 형식으로 데이터를 표시하는 데 사용됩니다. DataTemplate은 일반적으로 ListBox 또는 ListView와 같은 ItemsControl과 함께 사용되어 컨트롤의 각 항목 모양을 정의합니다. 2.ControlTemplate: ControlTemplate은 컨트롤의 모양과 동작을 정의하는 데 사용됩니다. 레이아웃, 테두리, 배경 및 기타 시각적 요소와 같은 컨트롤의 구조 및 시각적 모양을 정의합니다. ControlTemplate은 Button 또는 CheckBox와 같이 Control에서 파생되는 컨트롤과 함께 사용됩니다. 3.I..

c# 2023.03.21

WPF static Resource 와 dynamic Resource의 차이점

리소스를 설정해줍니다. 리소스 설정 wpf 의 리소스는 객체에 대한 값을 지정하여 재사용, 사용하기 위해서 사용합니다. 1.Static Resource 컴파일 타임에 로드됩니다. 처음 참조해 설정한 값이 변경 될일이 없는 경우 사용합니다. StaticResource를 통해 정적으로 등록합니다. 2.Dynamic Resource 런타임에 로드됩니다. 변경이 일어날때 사용합니다. 참조된 리소스가 즉시 사용 되지 않을 경우 사용합니다. 리소스가 변경될 때마다 다시 참조하여 가져오기 때문에 정적 리소스보다 성능의 저하가 있을 수 있습니다. DynamicResource를 통해 동적으로 등록합니다. 아래 코드를 추가하여 동적리소스에 해당 설정 정보가 바인딩 되게 해줍니다. 동적리소스 변경 로직 RadialGradi..

c# 2023.03.12

C# wpf Dispatcher DispatcherObjcet사용법 및 정의

WPF의 모든 UI관련 작업은 Main Thread가 수행합니다. 처음 시작할 때 있는 [STAThread]어트리뷰트가 위 내용에 해당 합니다. 여기서 STA 란 하나의 객체는 하나의 Thread에서만 엑세스할수 있도록하는 규칙과 제한입니다. 이때 WPF의 메인 Thread는 직접적으로 다른 Thread에 간섭을 받을수 없습니다. 즉 한 Thread에 생성된 컨트롤들은 그 Thread에서만 값을 변경 할 수 있습니다 해당 ui에 대한 쓰레드를 관리하는게 Dispatcher라는 큐 관리자이며 만약 해당 Dispatcher의 작업이 종료 되지 않았는데 ui를 변경하거나 조작하려 하면 에러가 발생하게 됩니다. 이를 방지하기 위해 사용하는것이 Dispatcher,DispatcherObject입니다. Dispat..

c# 2023.03.08

c# image to byte 이미지 바이트로 전환, 이미지 압축 하는 법

이미지를 바이트로 전환하여 압축하는 방법입니다. EncoderParameter클래스를 사용하여 압축의 퀄리티를 지정 할 수 있습니다. 0L과 가까울수록 이미지가 더 압축되어 깨짐현상이 있을 수 있습니다. 아래는 이미지를 선택하여 압축을 한 복사본을 만드는 예제 코드입니다. public FrmImagecs() { InitializeComponent(); OpenFileDialog dlg = new OpenFileDialog(); if (dlg.ShowDialog() == System.Windows.Forms.DialogResult.OK) { dlg.Filter = "jpg files (*.jpg)|*.jpg|jpeg files (*.jpeg)|*.jpeg|bmp files (*.bmp)|*.bmp|gif ..

c# 2023.02.27