2012-03-05 4 views
1

나는 Visual Studio 2010에서 두 개의 페이지 Default.aspxAbout.aspx으로 새로운 웹 양식 응용 프로그램을 만들었습니다. 내가 원하는 것은 Visual Studio 개발 서버에서 응용 프로그램을 디버그하고 http://company1.localhost:1023을 입력하면 기본 페이지에 메시지 This is default page for company1이 표시되어야합니다. IIS에서 설정을 수행하는 것과는 달리 URL 라우팅을 사용하여 어떻게 수행 할 수 있습니까?
참고 : 멀티 테넌시는 큰 단어이므로 그러한 간단한 시나리오에는 사용해서는 안되지만 요구 사항은 간단합니다. 확장 포인트가없는 각 회사에 동일한 애플리케이션 인스턴스를 실행하기 만하면됩니다. 이 질문은 하위 도메인을 프로그래밍 방식으로 만들 수있는 방법으로도 설명 할 수 있습니다.asp.net 웹 양식의 멀티 테넌시

답변

2

이 작업을 위해 IIS (및 아마도 DNS)를 올바르게 구성해야합니다. 예를 들어 모든 하위 도메인은 IIS의 지정된 웹 사이트에서 처리해야합니다. 일반적으로 단일 웹 사이트 만있는 경우 모든 호스트 헤더를 처리하도록 IIS를 구성 할 수 있지만 여러 웹 사이트가있는 경우 일반적으로 IIS는 호스트 헤더에 따라 달라 지도록 구성됩니다. 따라서 이러한 구성을 올바르게하는 것이 중요합니다.

올바른 웹 사이트에 도달하면 IIS 메타베이스에서 리소스 처리가 수행됩니다. 따라서이 경우 사이트에 구성된 기본 리소스로 리디렉션됩니다. resource-name이 있으면 확장 (htm, aspx)이 처리를 결정합니다. ASP.NET에서 Aspx 확장을 처리 할 것이므로 현재 호스트 헤더를 찾아 그에 따라 결정하면됩니다. 예 :

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (request.Url.HostNameType == UriHostNameType.Dns) 
    { 
     var hostParts = Request.Url.Host.Split('.'); 
     // you may validate if sub-domain name is present or not 
     lblMessage.Text = "This is default page for " + hostParts[0]; 
    } 
} 
+0

나는 이것이 그를 도와 줄 것이라고 생각하지 않습니다. 그는 IIS를 사용하지 않는 솔루션을 요구합니다. 아무 대답도 물론 더 나은 대답은 아니지만 –

+1

@CrabBucket, 나는 당신이 요점을 놓친 것 같아요. 어떤 OP 요구가 웹 서버 수준에서 구성되어야합니까 - ASP.NET 코드는 라우팅 (또는 모든 응용 프로그램/ISAPI 수준 코드)을 포함하여 요청이 ASP.NET 런타임 (IIS 구성이 필요함)에 성공적으로 도달 할 수있을 때만 재생됩니다. . – VinayC

+0

나는 그 요점을 놓쳤다. 그것은 다른 호스트에 대한 다른 기본값입니다. 다른 뭔가가 있어야한다고 생각했습니다. 고마워요 - 나는 내 대답을 지우고 있습니다 –

관련 문제