2012-12-14 3 views
3

i 여러 바인딩을 추가 할 때와 같이 여러 호스트 헤더 이름에 응답하는 my asp.net mvc4 web api를 어떻게 넣어야합니까?여러 호스트 헤더에 대해 Selfhosted를 구성하는 방법

누구든지 어떻게 할 수 있는지 알고 있습니까? 아니면 가능하다면? 내 기본 응용 프로그램 (여전히 커맨드)는 다음과 같습니다

: 경로 아래의 예 (호스트 헤더에 맞게 사용자 정의 제약 조건이 당신의 경로를 구성 시도 할 수

static void Main(string[] args) 
    { 
     _config = new HttpSelfHostConfiguration("http://localhost:9090"); 

     _config.Routes.MapHttpRoute(
      "API Default", "{controller}/{id}", 
      new { id = RouteParameter.Optional }); 

     using (HttpSelfHostServer server = new HttpSelfHostServer(_config)) 
     { 
      server.OpenAsync().Wait(); 
      Console.WriteLine("Press Enter to quit."); 
      Console.ReadLine(); 
     } 

    } 

답변

2

당신이 할 수있는 것 만 호스트 헤더) myheader.com 동일한 경우 일치 :

_config.Routes.MapHttpRoute(
     "API Default", "{controller}/{id}", 
     new { id = RouteParameter.Optional }, 
     new { headerMatch = new HostHeaderConstraint("myheader.com")}); 

제약 코드는 것 같은 뭔가 :

public class HostHeaderConstraint : IRouteConstraint 
{ 
    private readonly string _header; 

    public HostHeaderContraint(string header) 
    { 
     _header = header; 
    } 

    public bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection) 
    { 
     var hostHeader = httpContext.Request.ServerVariables["HTTP_HOST"]; 
     return hostHeader.Equals(_header, StringComparison.CurrentCultureIgnoreCase); 
    } 
} 
0

@Mark Jones 대답은 샘플과 같은 자체 호스팅 솔루션에서 작동하지만, IIS를 사용하게되면 원하는 모든 호스트 헤더가있는 여러 bindinds를 추가하면됩니다. 경로를 변경할 필요가 없습니다.

관련 문제