본문 바로가기

ASP.NET MVC12

ASP.NET MVC의 개발이 처음인 사람을 위한 조언 직장에서 ASP.NET MVC를 처음 만지면서 개발하는 사람에 대해 그 사람이 만든 코드를 보면서 코드 리뷰와 ASP.NET MVC의 기능에 대해 조언할 기회가 있었기 때문에 그 내용을 간단히 정리해 보았습니다. 상사의 지시였던지라 [MSDN을 참고 하세요.] 로 끝낼 수는 없는 상황이었기에ㅎㅎ.... 1. 어플 설정은 배포 환경별로 분리시킨다 개발환경과 스테이징 환경, 운영환경이 각자 같은 키에 값이 다를 경우, 아래와 같이 설정하면 배포 환경별로 각자 맞는 값을 반영시킵니다. xdt:Transform="Replace" xdt:Locator="Match(key)" 【Web.config】 배포 환경별로 다른 값을 설정합니다(아래 샘플 참고) Web.config (예) 로컬PC) Web.Debug.conf.. 2019. 1. 28.
ASP.NET MVC : 다국어 대응에 대한 메모 업무로 다국어 대응이 필요한 웹 어플리케이션의 기반 개발을 담당했었는데, 그때 작업한 내용을 정리한 것입니다. 전제 조건 기본 언어는 일본어지만 해외 유저에겐 영어로 제공하고 싶음. 유저의 기본 설정정보에서 사용 언어에 대한 정보를 취득할 수 있다. 개발 1. 리소스 파일을 준비한다 기본 언어:Localize.resx 일본어:Localize.ja-JP.resx 영어:Localize.en-US.resx ※리소스 파일의 Access Modifier는 「Public」으로 설정합니다. ※리소스 파일의 격납 장소는 임의로 변경 가능 합니다(ex)Lang > Localize.resx 등) 2. 유저 인증 직후의 처리에 아래의 처리를 추가한다 AuthorizeAttribute Class 를 상속받아 인증 로직을 만들.. 2019. 1. 28.
ASP.NET MVC : Response Header에 Cookie설정 Secure 설정 전 Response.AppendHeader("Set-Cookie", "testCookie=1234; path=/"); Secure 설정 후 Response.AppendHeader("Set-Cookie", "testCookie=1234; path=/; Secure; HttpOnly"); 참고 사이트 https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie 2019. 1. 28.
ASP.NET MVC : 어플 단위에서 설정 가능한 security 대책 방법 ASP.NET MVC의 웹 어플리케이션의 보안과 관련해서 업무중에 실시한 보안 대책의 일부를 정리해 보았습니다. 사내 기준으로 웹 어플과 인프라 쪽의 보안 대책을 동시에 진행했었습니다만 저는 웹 어플만을 다뤘기 때문에 인프라쪽의 대책에 대해서는 별도로 언급하지 않겠습니다. 1. Cookie 설정 Web.config SSL의 경우에만 Cookie를 유효화 시킵니다. (예) http로 접속할 경우엔 Cookie가 무효이므로 유저 로긴 불가) 2. Response Header 설정 Web.config [X-Frame-Options:SAMEORIGIN] iframe의 제한을 자기자신과 생산처가 같은 프레임 안이었을 경우에만 가능하도록 제한 합니다. [X-XSS-Protection:1; mode=block] XS.. 2019. 1. 28.
ASP.NET MVC : Ajax로 리스트 오브젝트를 Controller로 전달하기 Ajax로 리스트 오브젝트를 Controller로 전달하기 JS var things = [ { id: 1, color: 'yellow' }, { id: 2, color: 'blue' }, { id: 3, color: 'red' } ]; $.post('@Url.Action("PassThings")', { things: things }, function () { $('#result').html('"PassThings()" successfully called.'); }); Controller [HttpPost] public void PassThings(IEnumerable things) { // do stuff with things here... } 2019. 1. 24.
ASP.NET MVC : ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환시키기 ASP.NET MVC 에서는 보통 Model의 Validation 체크를 한 다음에 에러를 지정할 경우에는 아래처럼 에러메세지를 설정하고 ModelState.AddModelError("", "xx가 없습니다. 다시 한번 확인해 주세요."); View에서 ValidationSummary나 ValidationMessage을 사용해서 에러 메세지를 표시합니다. @Html.ValidationSummary() @Html.ValidationMessage("hoge") 하지만 Ajax에서 json형식의 리턴값으로서 처리를 끝낸 ModelState의 에러 메세지만을 돌려 받아서 화면에 표시하고 싶을때도 살다보면 생기기 마련입니다... ModelState의 에러 메세지 리스트를 취득해서 Json으로 반환시키기 Json으.. 2019. 1. 24.
ASP.NET MVC : 모든 예외 처리를 일괄 관리하기 참고 사이트 Log All Asp.Net MVC Errors ASP.NET MVC의 필터 기능을 사용해서 웹 어플이케이션 내의 모든 예외를 한 곳에서 처리 하도록 설정합니다. App_Start/FilterConfig.cs using log4net; public class FilterConfig { public static void RegisterGlobalFilters(GlobalFilterCollection filters, ILog logger) { filters.Add(new HandleErrorAttribute()); filters.Add(new ExceptionLoggingFilter(logger)); } } ExceptionLoggingFilter.cs public class ExceptionL.. 2019. 1. 24.
ASP.NET MVC : Url에 점 "."을 포함한 문자열을 허용시키기 ASP.NET MVC의 웹 어플리케이션의 URL에 "."을 표함하는 ID를 건내받기 위해 설정한 내용입니다. 대응으로는 Url에 점 "."을 포함한 문자열을 허용 시킬 필요가 있습니다. Web.config의 system.webServer 안에 있는 handlers에 아래와 같이 기술합니다. 사용 예시 2019. 1. 24.
ASP.NET MVC : 파일 다운로드의 callback 설정하기 ASP.NET MVC의 파일 다운로드에 대해 Controller에서 File값을 반환해서 location.href로 파일을 다운로드 합니다. HomeController.cs public ActionResult FileDownload() { byte[] stream; string fileName; // 처리 return File(stream, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName); } js location.href = 'http://myhome/Home/FileDownload'; 위의 코드로 서버측에서 작성한 파일을 다운로드 하는것은 가능합니다. 하지만 파일의 작성 대기시간이 길어지면 유저 입장에서는 지.. 2019. 1. 24.