는 가장 좋은 방법은 무엇입하는 오류를 반환에서 WCF 서비스에 편안한 방법이 있을까?

StackOverflow https://stackoverflow.com/questions/417632

문제

사용 WCF 에서 편안한 방법으로 보인다.나의 큰 총처럼 단순하고 유연성,하지만 당신은 또한 방법으로 Url 을 끝까지 찾고 있습니다.내가 무슨 말을 할 수 있습니다,나는 프로그래머입니다.

간단한 API 에 대한 검색 및 자료 편집하는 일치에 의해 거의 동일하게 간단한 설정의 오류 응답과 리다이렉션,그리고 나는 느낌을 도울 수 없는 것을 계속하는"pure"편안한 접근법이 될 수 있는 절단 나의 코프에도 불구하고 얼굴에 의해,또는 좀 더 구체적으로,코 나의 웹사 서비스자가 있습니다.내가 잘못 될 수 있지만,거기에있을 것 같지 않은 매우 많은 Http 는 오류 코드가 사용할 수 있으며,어떤 방법을 통과시 사용자 지정 오류 메시지가 표시됩니다.

을 명확히,나는 이야기에 대해 적절한 뛰어난 오류를 예상되지 않습니다 오류가 있습니다.내가 원하는 실제로 소통하는 문제 사용자를 식별하는 데 도움이 그들이 필요한 것을 할 수정합니다.

가능한 옵션이 나는 고려...

  1. 사용 Http 오류 코드 –이처럼 보일 것이 너무 제한에 내가 무엇을 표현할 수 있고,허용하지 않고 저를 공급하는 사용자 정의 메시지입니다.하십시오(!) 올바른 날 내가 잘못입니다.

  2. 환 Http 성공을 하지만 사용자 지정 오류체 –명백하게 가장 유연하지만 확실히 가장실 수 있습니다.

정말 감사하겠다면 그것을 사람이 공유할 수 있는 몇 가지 실제 경험의 특정 문제입니다.


업데이트

감사에 대한 제안을 사용하는 StatusDescriptionOutgoingWebResponseContext 체입니다.그것은 듯 처음에는 뭔가가 될 수 있는 사용.

나는 결론을 내가 위의 두 번째 옵션은 없습니다.내가 원하는대로 행하 어떤 Http 을 줄 수 있다.

이제 작동하는,그러나입니다.에 관계없이의 값을 나는 공급에 대한 이 숙박 시설,그렇지 않을 얻을 응답에서 반환됩니다.

내 서비스 방법은 다음과 같이

public MyType GetMyTypes(string criteria)
{
    try
    {
        return GetMyTypes();
    }
    catch (Exception ex)
    {
        OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
        response.StatusCode = HttpStatusCode.Forbidden;
        response.StatusDescription = "A Big fat error occurred";
        return null;
    }
}

그리고 여기에 원한 응답 메시지입니다.대한 언급이 전혀 없습니다 사용자 정의 메시지가...

HTTP/1.1 403Forbidden
Server:ASP.NET Development Server/9.0.0.0
날짜:Wed,07Jan2009 14:01:20GMT
X-AspNet-Version:2.0.50727
Cache-Control:private
Content-Length:0
연결:닫기

그것은 없으면 내가 다만 액세스하는 데 필요한 올바른 속에서 클라이언트입니다.이 정보는 단순히 전송되지 않을에서 링크가 있습니다.

이것이 무엇 StatusDescription 속성을 실제적으로 하는가?


업데이트

내가 결코하지 않았을 설정하는 방법을 알아보십시합 StatusDescription 을 제공합니다.나는 포함하지 않는 어떤 오류 메시지가 모두,그리고 전적인 Http 상태코드.나는 선택을 노출하 모두 비누고 편안한 끝점에 대한 내 서비스,그래서 클라이언트는 선택할 수 있습니다 그들이 선호하는 사용한 간단한 편안한 메시지 또는 상대적으로 풍부 비누 메시지입니다.

도움이 되었습니까?

해결책

보내는 적절한 응답 코드와 당신을 공급할 수 있습니다 사용자 지정 오류 메시지의 본문에 응답합니다.

다른 팁

니다.net4,던져 WebFaultException<T>(T errorDetail, HttpResponseCodecode)

여기서 당신은 설정하고 응답을 다른 개체 유형을 의미하고,또한 당신이 설정 ResponseCode 하고 있습니다.

errorDetail 해야 합 serializable

http://blogs.msdn.com/b/endpoint/archive/2010/01/21/error-handling-in-wcf-webhttp-services-with-webfaultexception.aspx

추가 오류 코드가 모두 같은 위(상태에서 설명)과 몸에서의 반환되는 페이지에서 내 나머지는 서비스:

OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
response.StatusCode = HttpStatusCode.Unauthorized;
response.StatusDescription = "You are not authorized.";
HttpContext.Current.Response.Write("You are not authorized.");
return null;

이 스레드 비슷한 질문입니다.

간단히 말해서 내가 믿는 당신은 설정할 수 있습니다 HTTP 상태 코드(있을 하나의 오류 코드),및 제공하는 사용자 정의 메시지 StatusDescription 객실:

OutgoingWebResponseContext response = WebOperationContext.Current.OutgoingResponse;
response.StatusCode = System.Net.HttpStatusCode.Forbidden;
response.StatusDescription = "Custom";

나는에 대해 많이 알지 못의 보급은 이 기술이 현실 세계에서습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top