如何 return 在 c# 的 soap web 服务中自定义验证器的操作结果
How to return operation result in custom validator in soap web service at c#
我用 ws 编写了一个 wcf soap web 服务 securtiy.I 编写自定义验证器。但是我只有 problem.My 个自定义验证器 return; or send to throw exception.But 我要return操作result.I附码below.How可以吗?
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?
}
}
}
您的验证方法需要 return OperationResult 不无效,这是您的问题。
所以签名应该是
public override OperationResult Validate(string userName, string password)
这意味着您还需要更新您的 UserNamePasswordValidator class 以匹配此签名。
我用 ws 编写了一个 wcf soap web 服务 securtiy.I 编写自定义验证器。但是我只有 problem.My 个自定义验证器 return; or send to throw exception.But 我要return操作result.I附码below.How可以吗?
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?
}
}
}
您的验证方法需要 return OperationResult 不无效,这是您的问题。
所以签名应该是
public override OperationResult Validate(string userName, string password)
这意味着您还需要更新您的 UserNamePasswordValidator class 以匹配此签名。