SOAP ヘッダーを使用しており、データベースから認証する必要があります。それで、私は1つのクラスを作成しようとしましたが、ユーザー名とパスワードを渡すと、DBにあるかどうかを返すメソッドが1つあります。
----- My Main Class ---
[WebMethod, SoapHeader("AuthenticateUser")]
public System.Xml.XmlElement CancelUSer(string _UserID, string _Remarks)
{
if (UsersAuth.ValidateUser(AuthenticateUser.UserName, AuthenticateUser.Password) > 0)
{
//METHODS
}
}
public class UserAuthenticateHeader : SoapHeader
{
public string UserName;
public string Password;
}
public class UsersAuth
{
static OracleConnection con;
public UsersAuth()
{
con = new OracleConnection(WebConfigurationManager.ConnectionStrings["conString"].ToString());
}
public static int ValidateUser(string _UserName, string _Password)
{
int Result = 0;
using (OracleCommand cmd = new OracleCommand("SELECT COUNT(*) FROM USES WHERE UID=:UID AND PASSWORD=:PASSWORD", con)) {
cmd.Parameters.AddWithValue(":UID", _UserName);
cmd.Parameters.AddWithValue(":PASSWORD", _Password);
con.Open();
Result = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
}
return Result;
}
}
さて、私のプログラムからこれを呼び出すと、ObjectReferenceNotSet がオブジェクトのインスタンスにスローされます。アプリケーションからメソッドのユーザー名、パスワード、ヘッダー値を設定しました。しかし、「 ValidateUser」メソッドにはヒットしません。
これを達成する方法はありますか?