2012-04-27 2 views
0

WCF 서비스가 구성되어 있으며이를 구성하기 위해 라우팅을 사용하고 있습니다. 404 메시지에 본문이 있다는 점을 제외하고는 모두 원하는대로 작동하고 있습니다. Service Endpoint not found.WCF에서 404 응답 본문을 제거하려면 어떻게합니까?

404에 빈 응답 본문을 넣으려고합니다.

다음
public class Global : HttpApplication 
{ 

    protected void Application_Start(object sender, EventArgs e) 
    { 
     RegisterRoutes(RouteTable.Routes); 

    } 

    private void RegisterRoutes(RouteCollection routes) 
    { 
     routes.Add(new ServiceRoute("RootService", new WebServiceHostFactory(), typeof(ServiceProvider))); 
    } 

내 서비스 클래스 :

[AspNetCompatibilityRequirements(RequirementsMode = AspNetCompatibilityRequirementsMode.Required)] 
[ServiceContract] 
public class ServiceProvider 
{ 
    [WebGet] 
    public Test ValidUrl() 
    { 
     return new Test(); 
    } 
} 

가 어떻게 URL을 http://localhost/RootService에 대한 응답이 빈 (404)의 몸을 만들 수 있죠 여기

내 경로 등록입니까?

+0

요청을 가로 채어 응답을 반환하는 MessageInspector를 작성해보십시오. – Rajesh

답변

0

이렇게하는 방법이 몇 가지 발견되었으며 아래 두 가지를 나열했습니다. 핵심은 UriTemplate을 *로 설정하는 것입니다. 이렇게하면 메소드가 명시 적으로 일치하지 않는 모든 라우트와 일치하게됩니다.

[WebGet(UriTemplate="*")] 
    public void ErrorForGet() 
    { 
     throw new WebFaultException(HttpStatusCode.NotFound); 
    } 

나뿐만 아니라이 방법을 좋아하지 않아,하지만 작동 : 이러한 방법의

[WebGet(UriTemplate="*")] 
    public void ErrorForGet() 
    { 
     WebOperationContext.Current.OutgoingResponse.SetStatusAsNotFound(); 
    } 

모두를 한 요청 클라이언트에 제공하는 메시지로 문자열을 오버로드. WebFaultException은 이와 같은 경로가되어야합니다. throw new WebFaultException<string>("Resource not found", HttpStatusCode.NotFound);