2011-03-08 4 views
4

6 ASP.NET 3.5 (C# .NET을)IIS 6 웹 사이트 루트 대 응용 프로그램? ResolveUrl()?

우리는 같은 파일 세트 다르게는 IIS 웹 사이트에서 응용 프로그램 대 루트 IIS 웹 사이트 인 경우에 따라 다르게 행동 문제가있는 IIS. 사용하여 생성 된 URL은 ResolveUrl() 다른 - 예 :

<a href="<%=ResolveUrl("~/contact.aspx") %>">Contact Us</a> 
루트 웹 사이트로

둘 다 동일한 파일을 사용하고 있습니다. 첫 번째 예제는 자체 웹 사이트이고 두 번째 예제는 응용 프로그램에 만들어진 가상 디렉터리입니다 (제목이 DSC). 둘 다 동일한 응용 프로그램 풀과 동일한 구성, 문서 및 보안 설정을 사용합니다. 두 설정 모두 IIS에서 모든 설정이 동일하게 적용됩니다.

조사한 모든 것은 ResolveUrl()이 웹 페이지가있는 IIS 응용 프로그램을 참조 함을 나타냅니다. 또한 정보가 IIS에서 완료되지 않은 경우 (이 경우) 루트 웹 사이트가 응용 프로그램으로 간주되는 여러 곳을 읽었습니다. 따라서 적절한 웹 주소를 생성해야하지만 그렇지 않습니다.

어떤 설정/구성이 적절하게 설정되어 있지 않은지 또는 ResolveUrl()이 프로그래밍 방식으로 사용되어야 하는지를 결정하기 위해 더 많은 조사를 찾는 데 도움이됩니다.

답변

2

이것을 확인하십시오 : From Relative Path to Absolute Path in ASP.NET without using the Tilde ~. 물결표 (~) 사용을 HttpRuntime.AppDomainAppVirtualPath으로 바꾸는 것이 좋습니다. 웹 응용 프로그램이 서버 루트 폴더에 있으면 AppDomainAppVirtualPath은 "/"만 반환합니다. 웹 응용 프로그램이 루트가 아닌 폴더에 있으면 마지막에 "/"없이 폴더의 가상 경로를 반환합니다 (source).

+0

IIS에서 그 원인이 될만한 것을 생각할 수 있습니까? 가능한 경우 애플리케이션 내에서 변경을 피하려고합니다. 물론, 이것은 "지금 당장 필요가있는"종류의 문제입니다 (무엇이 옳지 않은 것입니까?). 따라서 IIS에 무언가가있는 경우 코드를 변경하지 않고 해당 구성을 수행 할 수 있습니다. –

+0

코드 변경을 회피하는 경우 사이트는 현재 가상 디렉터리 루트에만 설치하도록 권장 할 수 있습니다. –

관련 문제