얼마 전에, 인터넷으로부터 HTTPS를 통한 Team Server 접근을 다뤄봤는데요.
TFS : 2-2. 두 번째 방법 - HTTPS를 통한 Team Server 접근
;
https://www.sysnet.pe.kr/2/0/273
지난번 설정에 이어서, 설명을 진행해 나가도록 하겠습니다.
실제로, 위와 같이 설정을 하고 나서 인터넷에서 접근을 하게 되면 아래 화면과 같이 "Work Items", "Team Builds", "Source Control"만을 정상적으로 사용할 수 있고, 나머지 "Documents", "Reports" 부분은 여전히 사용할 수가 없습니다. 그림에서도 자세히 보면, 폴더 아이콘에 빨간색으로 "x" 마크가 있는 것을 확인할 수 있습니다.
이유는 분명하지요. ^^ URL이 잘못되어 있기 때문입니다. 해당 노드를 클릭하고 속성창을 보게 되면 다음과 같은 값들로 되어져 있습니다.
Documents : http://WIN2003BASE/sites/WebTool
Reports : http://Win2003Base/Reports/Pages/Folder.aspx?ItemPath=/WebTool
Documents 쪽은 WSS 사이트이고, Reprots 쪽은 SQL Server Reporting Service 설치로 생성된 Reports 웹 가상 애플리케이션 경로입니다.
자, 그럼 이 경로를 수정해 주면 되는데요.
문제는 어디서 수정을 해줘야 하느냐 인데요. ^^ 안타깝게도 레지스트리나 기타 web.config 파일 등에는 그와 관계된 설정이 없었습니다. 할 수 없이, 최후의 수단으로 SQL Database를 살펴보기 시작했는데요. 직관적인 생각으로, ^^ 아래와 같은 테이블까지 찾아갈 수 있었습니다.
Database : TfsIntegration
Table : tbl_service_interface
위의 그림에서 하늘색으로 표시된 항목들인데요. 저 같은 경우 다음과 같이 수정을 했습니다.
ReportsService : https://www.sysnet.pe.kr:8090/ReportServer/ReportService.asmx
BaseReportsUrl : https://www.sysnet.pe.kr:8090/Reports
BaseServerUrl : https://www.sysnet.pe.kr:8090
BaseSiteUrl : https://www.sysnet.pe.kr:8090/sites
미리 말씀드리지만, 위의 항목 중에서 변경하지 않아도 되는 항목이 있을 것도 같지만, 일일이 하나하나 테스트해 보기엔 시간이 너무 아까우므로 모두 변경을 했습니다. 또한, 위와 같이 값을 바꾼 경우 (일단, 저는 잘 되었지만.) 향후 TFS 서버 시스템에 어떤 문제가 있을지 ^^ 저는 장담할 수 없습니다. 어쨌든 MS 문서에서 이렇게 하라고 찾아낸 것은 아니기 때문에.
위와 같이 적용하고 Team Explorer를 이용해서 접근을 하게 되어도 여전히 클라이언트 측에서는 예전 주소가 나타나게 됩니다. 이유는 이미 이전 토픽에서 말씀드렸는데요. 설정값들에 대한 캐시가 남아있기 때문입니다.
그래서, 다음의 폴더를 삭제한 후 다시 Team Explorer를 구동시키면 정상적으로 Reports / Documents 폴더를 사용하실 수가 있습니다.
Vista 이전:
C:\Documents and Settings\[사용자 계정]\Local Settings\Application Data\Microsoft\Team Foundation\1.0\Cache
Vista 이후:
C:\Users\[사용자 계정]\AppData\Local\Microsoft\Team Foundation\1.0\Cache
(해당 Reports나 Documents 설정에 대한 값을 담고 있는 파일은 위의 폴더로부터 GUID 값으로 하위 폴더가 생성되어져 있을 텐데, 그 폴더 안의 RegProxyFileCache.xml에 있습니다. 사실, 이 파일의 내용만 적절히 수정해도 상관은 없습니다.)
그렇게 모든 작업을 완료하고, Team Explorer를 구동시키면 다음 화면과 같이 인터넷에서도 정상적으로 접근이 되는 것을 확인할 수 있습니다.
Title |
11166 | 정성태 | 3/28/2017 | 23154 | 오류 유형: 382. System.Data.SqlClient.SqlException - Arithmetic overflow error converting IDENTITY to data type int. | |
11165 | 정성태 | 3/27/2017 | 25831 | 오류 유형: 381. Visual C++에서 min, max 함수를 사용한 경우 C2589, C2059 컴파일 오류 발생 | |
11164 | 정성태 | 3/27/2017 | 34571 | VC++: 111. C++ 클래스의 상속에 따른 메모리 구조 [2] | 1 |
11163 | 정성태 | 3/25/2017 | 24134 | VC++: 110. CreateThread Win32 API에 C++ 클래스의 멤버 함수를 전달하는 방법 | 1 |
11162 | 정성태 | 3/24/2017 | 28897 | 오류 유형: 380. Visual Studio 빌드 실패 - The OutputPath property is not set for project | |
11161 | 정성태 | 3/24/2017 | 19131 | 오류 유형: 379. ICOMAdminCatalog.GetCollection 호출 시 0x80070422 예외 발생 | |
11160 | 정성태 | 3/23/2017 | 26171 | .NET Framework: 649. ASP.NET - Server cannot append header after HTTP headers have been sent. (HTTP 헤더를 보낸 후에는 서버에서 헤더를 추가할 수 없습니다.) | 1 |
11159 | 정성태 | 3/23/2017 | 23345 | Windows: 136. Memory-mapped File은 Private Bytes 크기에 포함될까요? | 1 |
11158 | 정성태 | 3/22/2017 | 21454 | 디버깅 기술: 85. Windbg - SOS 디버깅 사례 System.NullReferenceException 예외 추적 | |
11157 | 정성태 | 3/22/2017 | 24574 | .NET Framework: 648. Dictionary<TKey, TValue>를 deep copy하는 방법 | 1 |
11156 | 정성태 | 3/21/2017 | 26799 | .NET Framework: 647. 닷넷(C#) 코드로 인증서 요청 코드 만드는 방법 | 1 |
11155 | 정성태 | 3/21/2017 | 27253 | .NET Framework: 646. SslStream의 CipherAlgorithm 선택이 가능할까요? | 1 |
11154 | 정성태 | 3/5/2017 | 32440 | VC++: 109. DLL에서 STL 객체를 인자/반환값으로 갖는 함수를 제공할 때, 그 함수를 외부에서 사용하는 경우 비정상 종료한다면? [2] | 1 |
11153 | 정성태 | 3/5/2017 | 32761 | VC++: 108. DLL에 정의된 C++ template 클래스의 복사 생성자 문제 | 1 |
11152 | 정성태 | 3/4/2017 | 28124 | VC++: 107. VirtualAlloc, HeapAlloc, GlobalAlloc, LocalAlloc, malloc, new의 차이점 [1] | 1 |
11151 | 정성태 | 3/3/2017 | 27259 | VC++: 106. DLL 개발자가 주의해야 할 Secure CRT 함수 사용 [1] | 1 |
11150 | 정성태 | 2/21/2017 | 22984 | .NET Framework: 645. Visual Studio Fakes 기능에서 Shim... 클래스가 생성되지 않는 경우 [5] | |
11149 | 정성태 | 2/21/2017 | 26920 | 오류 유형: 378. A 64-bit test cannot run in a 32-bit process. Specify platform as X64 to force test run in X64 mode on X64 machine. | |
11148 | 정성태 | 2/20/2017 | 26180 | .NET Framework: 644. AppDomain에 대한 단위 테스트 시 알아야 할 사항 | |
11147 | 정성태 | 2/19/2017 | 23544 | 오류 유형: 377. Windows 10에서 Fake 어셈블리를 생성하는 경우 빌드 시 The type or namespace name '...' does not exist in the namespace 컴파일 오류 발생 | |
11146 | 정성태 | 2/19/2017 | 24053 | 오류 유형: 376. Error VSP1033: The file '...' does not contain a recognized executable image. [2] | |
11145 | 정성태 | 2/16/2017 | 25665 | .NET Framework: 643. 작업자 프로세스(w3wp.exe)가 재시작되는 시점을 알 수 있는 방법 - 두 번째 이야기 [4] | 1 |
11144 | 정성태 | 2/6/2017 | 28879 | .NET Framework: 642. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (부록 1) - CallingConvention.StdCall, CallingConvention.Cdecl에 상관없이 왜 호출이 잘 될까요? | 1 |
11143 | 정성태 | 2/5/2017 | 27009 | .NET Framework: 641. [Out] 형식의 int * 인자를 가진 함수에 대한 P/Invoke 호출 방법 | 1 |
11142 | 정성태 | 2/5/2017 | 34148 | .NET Framework: 640. 닷넷 - 배열 크기의 한계 [2] | 1 |
11141 | 정성태 | 1/31/2017 | 29008 | .NET Framework: 639. C# 개발자를 위한 Win32 DLL export 함수의 호출 규약 (4) - CLR JIT 컴파일러의 P/Invoke 호출 규약 [1] | 1 |