는 가장 좋은 방법은 무엇입하는 오류를 반환에서 WCF 서비스에 편안한 방법이 있을까?
-
03-07-2019 - |
문제
사용 WCF 에서 편안한 방법으로 보인다.나의 큰 총처럼 단순하고 유연성,하지만 당신은 또한 방법으로 Url 을 끝까지 찾고 있습니다.내가 무슨 말을 할 수 있습니다,나는 프로그래머입니다.
간단한 API 에 대한 검색 및 자료 편집하는 일치에 의해 거의 동일하게 간단한 설정의 오류 응답과 리다이렉션,그리고 나는 느낌을 도울 수 없는 것을 계속하는"pure"편안한 접근법이 될 수 있는 절단 나의 코프에도 불구하고 얼굴에 의해,또는 좀 더 구체적으로,코 나의 웹사 서비스자가 있습니다.내가 잘못 될 수 있지만,거기에있을 것 같지 않은 매우 많은 Http 는 오류 코드가 사용할 수 있으며,어떤 방법을 통과시 사용자 지정 오류 메시지가 표시됩니다.
을 명확히,나는 이야기에 대해 적절한 뛰어난 오류를 예상되지 않습니다 오류가 있습니다.내가 원하는 실제로 소통하는 문제 사용자를 식별하는 데 도움이 그들이 필요한 것을 할 수정합니다.
가능한 옵션이 나는 고려...
사용 Http 오류 코드 –이처럼 보일 것이 너무 제한에 내가 무엇을 표현할 수 있고,허용하지 않고 저를 공급하는 사용자 정의 메시지입니다.하십시오(!) 올바른 날 내가 잘못입니다.
환 Http 성공을 하지만 사용자 지정 오류체 –명백하게 가장 유연하지만 확실히 가장실 수 있습니다.
정말 감사하겠다면 그것을 사람이 공유할 수 있는 몇 가지 실제 경험의 특정 문제입니다.
업데이트
감사에 대한 제안을 사용하는 StatusDescription
성 OutgoingWebResponseContext
체입니다.그것은 듯 처음에는 뭔가가 될 수 있는 사용.
나는 결론을 내가 위의 두 번째 옵션은 없습니다.내가 원하는대로 행하 어떤 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,
HttpResponseCode
code)
여기서 당신은 설정하고 응답을 다른 개체 유형을 의미하고,또한 당신이 설정 ResponseCode
하고 있습니다.
이 errorDetail
해야 합 serializable
추가 오류 코드가 모두 같은 위(상태에서 설명)과 몸에서의 반환되는 페이지에서 내 나머지는 서비스:
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";
나는에 대해 많이 알지 못의 보급은 이 기술이 현실 세계에서습니다.
이 결함이있을 수 있습니다.로 9/22/2011,문서 검토로 제품 팀: