2012-05-15 7 views
1

ReCustom 서비스를 만들 때 WCF를 사용하고 있습니다. 내 OperationContract를 이렇게 말한다 :WCF 휴식 서비스에서 찾을 수없는 끝점에 대한 사용자 지정 메시지

[OperationContract] 
[WebGet(
ResponseFormat = WebMessageFormat.Json, 
BodyStyle = WebMessageBodyStyle.Wrapped, 
UriTemplate = "GetItemList/{token}/{value}" 
)] 
Stream GetItemList(string token); 

그래서 나는 서비스가 호출됩니다 http://example.com/Service1.svc/GetItemList/myToken/myValue를 호출 할 때.

지금 내가 뭔가 링크, '어떤 방법/종료 지점이 존재하지 않는'원자바오 사용자가 http://example.com/Service1.svc/GetItemList/myToken/ 또는 http://example.com/Service1.svc/GetItemList/myValue/ 또는 http://example.com/Service1.svc/GetItemList/

가 어떻게 내 코드에서 그것을 구현할 수 호출을 말하는 기본 방법을 쓰고 싶어?

[OperationContract] 
[WebGet(
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped, 
    UriTemplate = "GetItemList/" 
)] 
string ValidateItemList(); 

[OperationContract] 
[WebGet(
    ResponseFormat = WebMessageFormat.Json, 
    BodyStyle = WebMessageBodyStyle.Wrapped, 
    UriTemplate = "GetItemList/{Val1}" 
)] 
string ValidateItemList(string Val1); 

그리고 기능에

, 나는 그냥 "어떤 방법이 존재하지"라는 문자열을 반환 : 같은

은 지금 내가 뭘 것입니다.

더 좋은 방법이 있습니까? 내 서비스로 전달되는 URL에 대해 오류 메시지를 사용자 정의 할 수 있습니까? 내 서비스로 연결되는 모든 기존 URL 요청에 대한 일반적인 메시지를 말하십니까?

+0

나는이에 대한 답변을 사랑하는 것, 내가 비슷한 질문을 게시하고, Dispatcher 구성 요소로 지적했지만, 운영자는 끝점과 관련이 있으며, 요점은 svc 호스트가 지정된 URI 템플릿과 구체적으로 일치하지 않는 요청에 대한 끝점을 만들지 않는다는 것입니다. –

+0

@ NathanTregillus, 예. 그건 사실이야. 내가 원했던 것은 Finally in Try-Catch와 같은 것입니다. 요청이 URI와 일치하지 않을 때 실행되는 기본 함수. 어떤 옵션이없는 것처럼 보입니다. –

답변

0

나는 위의 문제점에 대한 실현 가능한 해결책을 찾지 못했습니다. 하지만 대체 옵션을 찾았습니다. VS 2012에서 Microsoft는 ASP.NET Web API를 출시했습니다. WCF Rest의 다음 버전입니다. 따라서 여러분은 이러한 상황을 매우 쉽게 처리 할 수 ​​있습니다. 우리는 그 안에 라우팅 방법을 사용할 수 있습니다. 이 솔루션에 intrested

누구나 시작 머리의이 게시물로 볼 수 있습니다 : http://www.asp.net/web-api/overview/web-api-routing-and-actions/routing-in-aspnet-web-api

0

기본적으로 WCF의 아키텍처는 모든 프로토콜 (이 경우 http)의 하위 수준 구성 요소를 추상화하려고 시도하므로 이러한 유형의 세부 정보에 대해 걱정할 필요가 없습니다. 불행한 점은, 엔진이 요청을 처리 할 수있는 좋은 방법을 제공하지 않는다는 것입니다. 엔진이 올바르게 라우트 할 수 없다는 것입니다.

이 경우 URI를 올바른 계약 구현 클래스에 "전달"할 수 없습니다. 엔진은 구성 요소 또는 프로그래밍 방식으로 wcf 프레임 워크 내에서 사용자 정의 할 수있는 Dispatcher를 기다리는 멋진 구성 요소를 가지고 있습니다. 문제는 그들이 시행하기에 심각한 고통이라는 것입니다. 나는 다른 질문에 대한 내 대답에 예기치 않은 메시지 발송자를 구현 아래에 나열했습니다 :

Handling Invalid URI passed to a WCF service

당신이 어떤 추가 정보가 필요하면 알려주세요!