2010-01-15 2 views
1

자격 증명이 필요한 WCF 서비스에 연결하는 클라이언트에게 표준 "잘못된 사용자 이름/암호"메시지를 반환하는 더 나은 방법이 있습니까? 잘못된 사용자 이름/암호를 사용하여 WCF 서비스에 연결할 때 예외가 발생하는 다음 코드가 있습니다. 이상적으로MessageSecurityException, UsernamePasswordValidator 및 HttpWebRequest 문제

난 그냥 단순한 문자열을 다시 싶지만 나쁜 사용자 이름을 알리기 위해 UsernamePasswordValidator를 얻을 수는 HttpWebRequest를의하는 GetResponse 방식에서 클라이언트 측에 예외를 일으키는 오류 예외 또는 SecurityTokenException, 하나를 던지는 필요 .

FileInfo file = new FileInfo("Request.xml"); 
string payload = file.OpenText().ReadToEnd(); 

HttpWebRequest request = HttpWebRequest.Create(URL) as HttpWebRequest; 
request.ContentType = "text/xml"; 
request.ContentLength = payload.Length; 
request.MediaType = "utf-8"; 
request.Method = "POST"; 
StreamWriter writer = new StreamWriter(request.GetRequestStream()); 
writer.Write(payload); 
writer.Flush(); 
writer.Close(); 

Console.WriteLine("Awaiting Response..."); 
HttpWebResponse response = request.GetResponse() as HttpWebResponse; 
StreamReader reader = new StreamReader(response.GetResponseStream()); 
Console.WriteLine(reader.ReadToEnd()); 
Console.ReadKey(true); 

내가 원하는 이유는 .NET을 사용하지 않는 클라이언트가 서비스에 부딪히게됩니다.

+1

는 표준 SOAP 결함으로 제공되는 catch 블록에 당신의 자신의 메시지를 전달하기 때문에 클라이언트는 이것을 기대하고 필요에 따라 처리 할 수 ​​있습니다. FaultException은 .NET 클라이언트 및 서비스에서 사용하기위한 SOAP 오류에 대한 .NET 래퍼와 같다고 생각합니다. 이것이 사실이라면 FaultException을 고집하는 것이 좋습니다. –

+1

"잘못된 사용자 이름/암호"는 내가 아는 한 표준이 아닙니다. –

답변

2

try - catch 문에 넣어 및 예외를 catch하고 비 .NET 클라이언트에 의해 소비 할 때 나는 오류 예외를 생각