지금까지 ASP.NET MVC 응용 프로그램과 함께 사용하고있는 WCF 서비스 집합이 있습니다. 이 서비스 조작은 서버가 클라이언트가 제출 한 문제점을 식별 할 때 FaultException을 리턴합니다. 예를 들어 :Silverlight 4 및 ASP.NET의 WCF 오류 예외
if(string.IsNullOrEmpty(request.Name))
throw new FaultException<ValidationDictionary>(new ValidationDictionary());
이 내 ASP.NET 응용 프로그램이 모두 실패 실버와 그러나
catch(FaultException<ValidationDictionary> fault)
{
// Happy error handling.
}
에서 잘 작동합니다. 서버는 faultexception (예상대로)이있는 500 개의 상태 코드를 반환하지만 Silverlight의 경우 더프 응답처럼 보입니다.
다음 MS 기사
은 (추한)이이 주변에 일을 나타냅니다 http://msdn.microsoft.com/en-us/library/ee844556%28v=vs.95%29.aspx 이 해결 방법은 실버 라이트 클라이언트가 그들을 얻을 수 있도록하는 오류 예외가 경우에도 서비스 전송 200 상태 코드를 만든다. 그러나 이것은 내 서비스 (내 ASP.NET 응용 프로그램, 야생에서 다른 사용자)의 '정상적인'고객을 망칠 것입니다.그러나 서비스의 요점은 고객으로부터 분리되는 것입니다. 나는 여전히 내 서비스가 500 개의 상태 코드를 반환하여 내 ASP.NET 응용 프로그램이 FaultExceptions을 감지하고 처리 할 수 있기를 원합니다. 그러나 실버 라이트도 그들을 처리 할 수 있기를 바랍니다.
누구도이 문제에 대해 앞서 왔습니까?
나는 매우 못생긴 해킹처럼 보이지만 결과 코드를 변경하고 싶지 않고 다른 서비스 사용자를 혼란스럽게합니다. 메시지 전송 보안을 사용할 때 HTTP 스택 옵션에 대해 확신 할 수 없었고 이로 인해 문제가 발생할 수 있다고 생각했습니다. 압축 문제는 아마도 나에게 많은 문제가되지는 않지만, 성가시다. 그 해결책을 시도하고 내가 얼마나 멀리 나가는지 볼 것입니다. 감사. – James
우리의 경우 보안은 대체 스택을 사용하여 더 잘 작동합니다. 나는 오히려 그 일에 매달 렸을 것이지만, 우리가 이야기하는 웹 서비스 중 하나는 많은 양의 데이터를 다시 우리에게 제공합니다. 그들은 HTTP 압축이 "무료"로 데이터를 처리 할 때 데이터 자체를 최적화하는 것을 꺼려했습니다. 당신은 전투를 선택해야합니다 ... – Aardvark
이것은 당신의 의견을 보내 주셔서 감사합니다. – James