Inflearn brand logo image

인프런 커뮤니티 질문&답변

김대홍님의 프로필 이미지
김대홍

작성한 질문수

ASP.NET Core MVC +ASP.NET Core +REST API +.NET 8.0

iis 배포 후 view페이지 수정

해결된 질문

작성

·

52

·

수정됨

0

수업한 내용을 바탕으로

visual studio에서 배포를 한 후

배포한 경로로 iis 세팅을 하였습니다~

 

view페이지를 수정 할때마다 iis를 재기동 해야하는 문제가 발생하는데 웹폼처럼 view페이지(자바스크립트부분) 만 수정 할 수 있나요? 만약에 view페이지를 수정할때마다 배포를 하고 iis를 잠시 껐다 켜야하면 실무적으로 사용할 수 없는기술이 아닌가 싶어서요

 

제 질문은 view 페이지의 수정이 빈번하게 발생할때 iis 재기동 없이 업데이트 할 수 있는 방법이 있는지 여쭤보고 싶네요

 

웹폼처럼.. aspx파일만 수정하면 반영됬으면 좋겠는데...

답변 2

0

개발자Park님의 프로필 이미지
개발자Park
지식공유자

안녕하세요.개발자park입니다.

답변을 늦게봤네요.죄송합니다.

[1]

프로젝트를 더블 클릭후 아래내용을 붙여넣어주십니다.

<CopyRazorGenerateFilesToPublishDirectory>true</CopyRazorGenerateFilesToPublishDirectory>

image.png

[2]

msdn지침대로 설치해주십니다.

주의상항은 아래 적어놨습니다. ㄱ부터 읽어주시면 됩니다.

관련주제:

Enable runtime compilation for all environments

링크:

https://learn.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-9.0&tabs=visual-studio#enable-runtime-compilation-for-all-environments

ㄱ]

A]-nuget package설치하기전에, 먼저 프로젝트를 간단하게 게시해줍니다.

B]-HelloASP.deps.json파일을 메모장으로 열어줍니다.

C]-버전을 확인해줍니다.

image.png

D]- 주의사항★위 그림과 nuget package의 버전을 일치시켜줍니다.

msdn에 나오는 package입니다.

image.png

ㄴ program.cs에 다음 내용을 추가해줍니다.

builder.Services.AddControllersWithViews();

builder.Services.AddRazorPages()

.AddRazorRuntimeCompilation();

ㄷ]Views폴더에 들어가서

cs html파일 메모장으로 열어서 내용 변경해주시면 됩니다.

image.png

 

감사합니다.

김대홍님의 프로필 이미지
김대홍
질문자

답변감사합니다!!

김대홍님의 프로필 이미지
김대홍
질문자

런타임 컴파일 사용하면 개발환경에서는 좋지만

운영환경에서는 성능이랑 보안 문제 때문에 안 좋다고 하는데요..
그럼 실무에서는 빈번하게 VIew수정이 발생했을땐, 빌드후 IIS재기동 이렇게 밖에 안 되는건가요? - 사용자가 웹페이지를 이용하고 있을땐, 페이지가 오류가 날텐데..

혹시 다른 방법 사용하시는 것이 있을까요?

개발자Park님의 프로필 이미지
개발자Park
지식공유자

간단한 방법은 위에 설명드린 방법밖엔 저도 모르겠습니다.

azure에서 여러 대의 서버 구성을 통해 해결은 가능하지만,

비용과 관리 포인트가 증가합니다.

관련링크:

https://learn.microsoft.com/en-us/azure/virtual-machines/workloads/oracle/oracle-reference-architecture

감사합니다.

개발자Park님의 프로필 이미지
개발자Park
지식공유자

아니면 마지막에 다룬 rest api서버와

html파일을 활용하시는 방법도 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다. 김대홍님.

ASP.NET Core를 IIS에 배포한 후, View 페이지 (특히 자바스크립트 부분)를 수정할 때마다 IIS 재기동 없이 업데이트할 수 있는 방법에 대해 질문 주셨군요.

ASP.NET Core MVC 프로젝트를 배포할 때, 특히 View와 같은 정적 파일의 일부를 수정하고자 할 경우, IIS를 재기동하지 않고 변경 내용을 적용할 수 있는 몇 가지 방법이 있습니다.

  1. 정적 파일 캐싱 방지: 정적 파일에 변경이 있을 때, 브라우저 캐시를 통해 옛 파일이 제공되지 않도록 설정하는 것이 중요합니다. 파일의 이름에 버전이나 고유한 식별자를 추가하여 캐싱을 제어할 수 있습니다. 보통 <script src="app.js?v=1.0">처럼 버전을 명시해주면 브라우저가 매번 새 파일로 인식합니다.

  2. 파일 업데이트를 위한 라이브 리로드 도구 사용: 개발 환경에서는 자주 사용하는 도구들 (예: BrowserSync, LiveReload 등)을 활용하여 변경 사항이 있을 때 자동으로 브라우저에 반영되도록 할 수 있습니다.

  3. IIS 설정 조절: Web.config 파일을 변경하거나 IIS의 응용프로그램 풀을 다시 시작하지 않고도, append 1 stamp 같은 매개변수를 사용하여 파일 변경 시 자동으로 새 버전을 읽도록 설정할 수 있습니다. 정적 파일의 경로에 QueryString 파라미터를 추가하여 브라우저가 매번 최신 파일을 요청하게 할 수 있습니다.

다음 글에서는 그런 해결 방안들에 대해 더 자세히 이야기하고 있습니다:
- ASP.NET Core - Change Static Files Versioning

잘 구성된 환경에서는 실행 완료된 블라블라를 통해 재기동 없이도 수정을 가능하게 할 수 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

김대홍님의 프로필 이미지
김대홍
질문자

build 파일에 .cshtml 파일이 없으니 무조건 빌드해서 올려야할거같은데용

김대홍님의 프로필 이미지
김대홍

작성한 질문수

질문하기