2013-06-04 10 views
2

나를 미치게 만드는 Visual Studio 2012에 문제가 있습니다. 우리는 ASP.NET 웹 앱을 개발 중이고 앱을 시작할 때 메모리에 많은 것을로드해야합니다. 서버가 시작되어 첫 번째 HTTP 요청을 처리 할 준비가되면 20 ~ 30 초가 걸릴 수도 있습니다.TFS 2012 Visual Studio 플러그인은 ASP.NET AppDomain이 재활용되도록 파일을 체크 아웃 할 때마다 즉시 "app_offline.htm"을 만들고 삭제합니다.

우리는 TFS 소스 컨트롤을 사용하고 있습니다. 기본적으로 누군가가 파일을 편집 할 때마다 TFS는 파일을 "체크 아웃"(솔루션 탐색기의 파일 아이콘 옆에 빨간색 체크 표시가 나타남)으로 표시하고 즉시 만듭니다 웹 응용 프로그램의 루트에있는 "app_offline.htm"파일을 삭제합니다.

이렇게하면 웹 응용 프로그램이 언로드됩니다. 이걸 찾으려면 Application_Start 및 Application_End 이벤트에서 로깅을 사용했습니다. 그런 다음 SysInternals Process Monitor를 사용하여 어떤 활동이 일어나고 있는지 확인했습니다. app_offline.htm이 procmon의 암호화 된 출력에서 ​​언급되는 것을 보았을 때, 나는 app_offline.htm이 실제로 만들어지고 즉시 삭제되었음을 확인한 Directory Monitor라는 별도의 File System Watcher를 사용했습니다.

이 노크 - 온 효과는 몇 가지 변경 사항이있을 경우 개발 중에 여러 번 언로드/다시로드해야한다는 것입니다. 이것은 시간 낭비입니다.

뿐만 아니라 앱 도메인을 지속적으로 다시로드하면 결국 IIS에서 메모리가 부족 해지고 IISRESET을 수행해야합니다.

TFS가이 파일을 만드는 이유를 아는 사람이 있습니까? 그리고 그걸 막을 수있는 방법이 있을까요?

답변

4

해결 방법을 발견했습니다.

1) 비주얼 스튜디오는 C app_offline.htm 파일 캐시되는 위치로 이동하여 사용자 이름 \ 사용자 [사용자] \의 AppData \ 로밍 \ 마이크로 소프트 \으로 VisualStudio는 \ 11.0 \가 (교체 [사용자])

2) app_offline.htm 파일을

(삭제 참고 :이 혼자 해결되지 않습니다, VS는 찾을 수없는 것 다시 파일을 다시 생성으로)

3)라는 디렉토리 app_offline.htm 만들기 (A DIRECTORY!)

이것은 본질적으로 파일이 아니기 때문에 파일을 사용하려고하는 프로세스에서 오류를 일으키고 이름 충돌은 VS가 파일을 다시 만들려고 시도하지 않음을 의미합니다. 다행히도이 오류는 원치 않는 부작용이 없습니다.

이제 VS 및 Team Foundation Server를 계속 사용하고 계속해서 appdomain을 다시로드하지 않아도됩니다.

0

Visual Studio에서 IIS의 디렉터리로 게시하는 경우 발생합니다. 그리고 VS 2012는 해당 파일을 해당 위치에 보관합니다.

C:\Users\[user]\AppData\Roaming\Microsoft\VisualStudio\11.0\app_offline.htm 

쉬운 소리는 서버에 직접 게시 할 수 있습니다. 그리고 나는 당신이 로컬 폴더에 퍼블리시하고 원하는 위치에 사이트를 복사 할 수 없다고 믿습니다.

매핑을 제거한 후 (서버에 직접 게시하는 경우) 파일을 "체크 아웃"하면 즉시 웹 응용 프로그램의 루트에 "app_offline.htm"파일이 만들어지고 삭제되지 않습니다. 도움이 되길 바랍니다.

+0

안녕하세요, 저는 앱을 게시하지 않습니다. 그냥 그것을 개발.내가 언급 한 위치에서 app_offline.htm 파일을 삭제하려고 시도했지만 불행히도 시스템이 다시 작성합니다. – krisdyson

+0

Visual Studio를 사용하여 IIS에서 직접 파일을 게시합니까? – Microtechie

+0

안녕하세요, 게시가 전혀 없습니다. 단지 IIS가 정상적인 소스 디렉토리를 가리키고 있습니다. thx – krisdyson