'ASP.NET' 에서 라우팅이라고 하면 엔드포인트 라우팅을 말합니다. 엔드포인트 라우팅은 끝점이 컨트롤러로 끝나는 것을 의미하죠. (참고 : MS Learn - ASP.NET Core에서 라우팅 : 엔드포인트) 그런데 'ASP.NET MVC'를 안 쓴다면 프론트 엔드(View-Controller)의 라우팅을 제어할 필요성이 생깁니다. 이럴 때는 엔드 포인트를 이용할 수 없기때문입니다. 이 문제를 해결하려면 URL 재작성(URL Rewrite)이 필요합니다. 연관글 영역 0. 테스트 환경 구성 'wwwroot' 폴더를 다음과 같이 구성합니다. (루트 폴더) index.html Admin1 └ index.html Home1 └ index.html Log1 └ index.html 스크린 샷은 리액트 라우터(..
해시 라우터를 사용할 때는 발생하지 않는 문제지만 브라우저 라우터를 사용하면 발생하는 문제입니다. 연관글 영역 1. 문제의 발견 SPA(Single Page Application)에서 라우팅을 할 때 1) 새로고침을 하거나 2) SPA의 'APP'가 있는 URL에 진입하지 않고 다른 주소부터 진입하려고 하면 404 에러가 나게 됩니다. 해시(#) 라우팅을 쓸 때야 결국 지정된 파일을 읽은 후 해시 라우터를 사용하므로 문제가 되지 않지만 브라우저 라우터를 쓸 때는 진입 파일이 없으니 어쩔 수가 없죠. 2. 해결 방법 이 문제를 해결하려면 해석할 수 없는 주소가 왔을 때 폴백(Fallback)하도록 구성해야 합니다. (참고 : Rick Strahl's Weblog - Handling SPA Fallback ..
티스토리에서는 '연관글' 혹은 '시리즈' 등을 구현하는 방법은 수동으로 작성하는 방법뿐입니다. 저도 수작업으로 연관글을 작성하고 있는데요.... 서너 개만 되도 모든 포스트에 들어가서 수정하는 게 큰일이 돼버립니다. 일반적인 사이트에서는 별도의 파일을 생성하거나 연관글을 관리할 수 있는 인터페이스가 재공되지만, 티스토리는 그런 게 없습니다. 그래서 저는 별도의 파일을 불러오도록 작업을 하고 'images'에 업로드하여 구현하여 사용하고 있었습니다. 그런데 이 방법은 스킨을 백업할 때 같이 백업된다는 문제와 내용을 수정하려면 'HTML'파일을 다운받아서 다시 업로드해야 하는 불편함이 있습니다. 1. 아이디어 티스토리 안에서 뭔가 할 수 없나 해서 이것저것 해봤지만..... 안 됩니다. 대신 쓸만한 기능이 ..
컨트롤러에서 다른 컨트롤러 호출 시 리퀘스트(Request)나 리스폰스(Response) 처리 안 되는 문제가 있습니다. (리퀘스트는 이런 문제가 적은데 리스폰스는 무조건 발생합니다.) 이런 문제 때문에 인증도 되지 않습니다. 1. 문제의 발견 이것은 당연한 것이 외부에서 웹서버를 통해 API(컨트롤러)를 호출할 때는 1) 헤더에 이것저것 정보들이 들어가고 2) 웹서버는 정보를 처리하고 하는 과정에서 'HttpContext'정보가 입력됩니다. 하지만 컨트롤러를 직접 생성하면 'HttpContext'가 null이 됩니다. 그러니 A컨트롤러에서 B컨트롤러를 호출하게 되면 'HttpContext'가 null되는 것이죠. 아래 코드를 따라 해 봅시다. 요청을 받는 쪽 컨트롤러(B 컨트롤러)에서 이렇게 하고 [H..
전 비주얼 스튜디오(Visual Studio)를 주로 쓰다 보니 'VS Code(Visual Studio Code)'는 잘 안 쓰게 됩니다. 그러다 보니 설치할 때마다 까먹어..... 1. 확장 찾기 VS코드는 언어 팩도 '확장'으로 처리하게 돼있네요. 확장에서 'Korean Language Pack for Visual Studio Code'찾아 설치합니다. 참고 : 비주얼 스튜디오 코드 마켓 플레이스 - Korean Language Pack for Visual Studio Code 비주얼 스튜디오 코드를 재실행합니다. 2. 다시 영어로 바꾸기 언어 변경 설정을 찾으려면 명령 팔레트를 열어야 합니다. 보기 > 명령 팔레트 나 단축키인 'Ctrl + Shift + P' 를 눌러줍니다. 명령 팔레트에서 '표..
다른 포스팅에서 한번 다룬 내용이지만 그 포스팅은 종합적인 내용이라 검색하기 좋게 분리한 내용입니다. 연관글 영역 1. 증상 콘솔 애플리케이션(console application)에서 'F11'을 누르면 전체화면으로 전환됩니다. 이렇게 되면 키 이벤트로 'F11'을 받을 수 없게 됩니다. 2. 해결 'WinAPI'를 이용하여 '시스템 입력'을 꺼주면 됩니다. '시스템 입력'을 끄게 되면 'Ctrl + C' 같은 시스템 단축키도 동작하지 않습니다. 'WinAPI'를 사용하려면 1) 애플리케이션의 핸들을 가지고 와서 2) 콘솔 모드를 읽은 후 3) 읽은 모드를 변경하고 4) 변경된 콘솔 모드를 적용 하면 됩니다. 2-1. 사용할 함수 마샬링 필요한 함수는 GetStdHandle : 애플리케이션의 핸들을 가지..
다른 포스팅에서 한번 다룬 내용이지만 그 포스팅은 종합적인 내용이라 검색하기 좋게 분리한 내용입니다. 연관글 영역 1. 증상 콘솔 애플리케이션(console application)에서 콘솔 창을 클릭하거나 드래그하면 응용프로그램이 멈추는 현상 있습니다. 이것은 '빠른 편집 모드(Quick Edit Mode)'가 활성화 되어 있기 때문입니다. 2. 해결 'WinAPI'를 이용하여 '빠른 편집 모드'를 꺼주면 됩니다. 'WinAPI'를 사용하려면 1) 애플리케이션의 핸들을 가지고 와서 2) 콘솔 모드를 읽은 후 3) 읽은 모드를 변경하고 4) 변경된 콘솔 모드를 적용 하면 됩니다. 2-1. 사용할 함수 마샬링 필요한 함수는 GetStdHandle : 애플리케이션의 핸들을 가지고 오는 함수 GetConsole..
엔티티 프레임워크 같은 프레임워크를 객체 관계형 매핑(Object–relational mapping), 줄여서 ORM이라고 부릅니다. 이런 프레임워크의 장점 중 하나가 약간의 작업만 하면 다양한 DB를 연결할 수 있다는 것입니다. 이 포스팅에서는 'SQLite'와 'MSSQL'를 따로따로 마이그레이션하고 사용하겠습니다. 다른 DB도 얼마든지 추가할 수 있습니다. 연관글 영역 0. 프로젝트 생성 DB 테이블 모델과 컨텍스트(DbContext)를 관리할 프로젝트를 생성합니다. 여기에서 마이그레이션 버전관리가 이루어집니다. '클래스 라이브러리'로 프로젝트를 생성합니다. (프로젝트 이름 : EfMultiMigrations) 누겟에서 아래 종속성을 찾아 설치합니다. Microsoft.EntityFrameworkC..
이전 포스팅에서는 하나의 DB에 여러 컨텍스트를 사용하기 위해 각각 마이그레이션을 생성해서 관리하는 방법을 사용했습니다. 이 방법은 여러 개의 마이그레이션을 관리해야 해서 불편함이 많습니다. 그래서 전체를 관리하는 컨텍스트를 만들고 마이그레이션과 조인이 필요할 때는 이 '전체 컨텍스트'를 따로 만들어 사용하는 것이 좋습니다. 연관글 영역 0. 방법 이 방법의 단점은 전체용 컨텍스트를 따로 관리해야 한다는 것인데..... 관리와 성능의 이점을 생각하면 이 정도는 단점이라고 할수 없죠 ㅎㅎㅎㅎ 결국 마이그레이션만 따로 관리할 뿐 컨택스트를 하나만 쓰는 것과 다름없는 구조가 됩니다. 기본 세팅 이전 포스팅에서 (참고 : [Entity Framework 6] 하나의 DB에 여러 컨텍스트(Multiple DbCo..
프로젝트를 진행하다 보면 여러 가지 이유로 컨텍스트(Context)를 분리해서 관리할 필요가 있죠. 권장은 하나의 DB에 하나의 컨텍스트를 사용하는 것이지만 하나의 DB에 여러 컨텍스트를 사용하는 것도 가능합니다. 여러 컨텍스트를 조인하게 되면 성능이 확 떨어지고 조건에 따라서 마이그레이션 명령이 안 먹힐 수 있습니다. 그래서 하나의 컨텍스트를 사용하는 것을 권장하는 것입니다. 이 포스팅에서는 하나의 DB에 여러 컨텍스트를 사용하는 방법에 대해 알아봅시다. 연관글 영역 0. 프로젝트 생성 및 기본 세팅 이 포스팅에서는 'SQLite'를 사용할 예정입니다. (다른 DBMS도 동일합니다.) 프로젝트를 생성하고 누겟(Nuget)에서 다음 종속성을 찾아 추가합니다. - Microsoft.EntityFramewo..