2016-06-06 15 views
0

zurücksende Ich schreibe einen WCF Seife Web-Service mit WS securtiy.Ich schreibe benutzerdefinierten Validator. Aber ich habe Problem.Meine benutzerdefinierte Validator nur zurück; oder senden, um Ausnahme auszulösen. Aber ich möchte Operation Ergebnis zurückgeben.Ich befestigte Code unten.Wie kann ich tun?Wie man Operation Ergebnis in benutzerdefinierten Validator in Soap-Web-Service bei C#

public class CustomValidator : UserNamePasswordValidator 
    { 
     public override void Validate(string userName, string password) 
     { 

      OperationResult retVal = new OperationResult() 
      { 
       ReturnCode = 0, 
       ReturnMessage = "OK" 
      }; 

      string s_userName = ConfigurationManager.AppSettings["username"].ToString(); 
      string s_password = ConfigurationManager.AppSettings["password"].ToString(); 
      if (userName == null || password == null) 
      { 
       throw new ArgumentNullException();--I dont want 
       return retVal; --It is good for me 

      } 

      if (userName == s_userName && password == s_password) 
      { 

       return; 

      } 
      else 
      { 

      //return; 
       throw new FaultException("-2 Unauthorized");--I dont want this 
       return retVal; --This giving problem.How can I solve? 
      } 

     } 
    } 

Antwort

0

Ihre Validierungsmethode muss OperationResult nicht void zurückgeben, das ist Ihr Problem.

So sollte die Unterschrift

sein
public override OperationResult Validate(string userName, string password) 

Dies bedeutet, dass Sie Ihre UserNamePasswordValidator Klasse aktualisieren müssen auch diese Signatur übereinstimmen.

+0

Thanks.it ist mein Problem gelöst –

+0

Wie hat das dein Problem gelöst? Nach [MS docs] (https://docs.microsoft.com/en-us/dotnet/api/system.identitymodel.selectors.usernamepasswordvalidator?view=netframework-4.7.1) definiert der 'UserNamePasswordValidator' die Methode to Rückgabe 'void' nicht' OperationResult'. Wie können Sie dies überschreiben? – MrWombat