2012-11-20 4 views
11

루트에 대해 RestPath를 설정하려고합니다. '/'는 허용하지만 그 경로는 허용하지 않습니다. 그것의 말 RestPath '/' on Type 'MainTasks' is not ValidServiceStack을 사용하여 루트 경로 '/'의 경로를 만듭니다.

이것을 허용하는 방법이 있습니까? 루트에서 리소스를 제공하고 싶습니다.

[Route("/", "GET")] 
public class MainTasks : IReturn<MainTasksResponse> 
{ 
} 

답변

9

당신은 단지 FallbackRouteServiceStack의 경로 / 경로에 일치시킬 수는, 예컨대 :

[FallbackRoute("/{Path*}")] 
public class Fallback 
{ 
    public string Path { get; set; } 
} 

이 모든 타의 추종을 불허하는 경로 (INC./foo는/막대)를 처리하기 위해 와일드 카드를 사용합니다. 폴백 경로는 1 회만 허용됩니다. default.cshtml 면도기 또는 마크 다운보기 또는 정적 default.htm

  1. 변경 EndpointHostConfig.DefaultRedirectPath 추가를
  2. 를 사용하고자하는 서비스에 리디렉션 :

    또한 기본 루트 경로를 처리 할 수있는 몇 가지 다른 방법 /가 있습니다 (HTML 요청의 경우)

  3. 등록 a EndpointHostConfig.RawHttpHandlers - 이것은 ServiceStack's Order of Operations으로 보았을 때 가장 먼저 처리 한 것입니다.
  4. IAppHost.CatchAllHandlers을 등록하십시오. 이 일치하지 않아 요청에 대해 호출됩니다.
  5. 이 나를 위해 일한 Global Request Filter
+0

감사합니다. "/ api"의 모든 것을 노출해야하는 것 같습니다. –

+0

default.htm을 만들면 http : //localhost/default.htm으로 리디렉션됩니다. http : // localhost에서 직접 제공하는 방법이 있습니까? –

9

의 요청을 처리합니다. 방금 RawHttpHandler를 추가하고 요청 경로를 다시 작성했습니다. 챔피언처럼 일했습니다. 내가이 일을 시도하고있다

var conf = new EndpointHostConfig(); 
{ 
    DefaultRedirectPath = "/foo", 
    AllowFileExtensions = { { "eot" }, { "svg" }, { "ttf" }, { "woff" } }, 
}; 

conf.RawHttpHandlers.Add(r => 
{ 
    if (r.RawUrl == "/") 
    { 
     HttpContext.Current.RewritePath(conf.DefaultRedirectPath); 
    } 

    return null; 
}); 

this.SetConfig(conf); 
+0

그건 아름다운 솔루션, 공유를위한 thx이야! :) – mythz

+0

정말 고마워, 고마워! 나는 '[...] HttpContext.Current.Response를 사용하여'/ '을 다른 URL로 리다이렉트하기 위해 사용하고있다. (servicestack 앱은 순수한 api 엔드 포인트로 실행되고'/ '는 API 문서 사이트로 리디렉션된다. 리디렉션 ("http://somesite.com/api", true), [...] '. –

0

(이. 내 AppHost의 구성 기능에서 발견된다) 및 자체 호스팅 서비스의 최신 서비스 스택에서 더 이상 작동에 크리스토퍼 데이비스 방법을 발견했다. 매개 변수를 사용하지 않는 서비스는 다음과 같습니다.

[FallbackRoute ("/")]