Я пытаюсь изучить веб-сервисы и создал простой. Теперь я хочу защитить его аутентификацией. Я узнал, что люди достигают этого с помощью получения класса из SoapHeader. Я добился этого, но теперь моему веб-методу требуется еще один параметр. Я думаю, что сделал что-то не так, потому что в других примерах люди не публикуют свои значения аутентификации в качестве параметра.
Вот мой код веб-сервиса.
public class AuthUser : SoapHeader
{
public string Uname;
public string Pwd;
}
public AuthUser au;
string cs = ConfigurationManager.ConnectionStrings["ModelCCM"].ConnectionString;
[WebMethod]
[SoapHeader("au", Direction = SoapHeaderDirection.In)]
public string InsertCustomer(string Name, string Phone, string City, string Email)
{
if (au.Uname == "****" && au.Pwd == "*****")
{
int getCustomerId;
using (SqlConnection con = new SqlConnection(cs))
{
using (SqlCommand cmd = new SqlCommand("InsertCustomer", con))
{
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.AddWithValue("@Name", Name);
cmd.Parameters.AddWithValue("@Phone", Phone);
cmd.Parameters.AddWithValue("@City", City);
cmd.Parameters.AddWithValue("@Email", Email);
cmd.Connection = con;
con.Open();
getCustomerId = Convert.ToInt32(cmd.ExecuteScalar());
con.Close();
return getCustomerId.ToString();
}
}
}
else
{
return "Unauthorized Attempt";
}
}
А вот мое простое консольное приложение.
static void Main(string[] args)
{
ServiceReference1.WebServiceCCMSoapClient ws = new ServiceReference1.WebServiceCCMSoapClient();
ServiceReference1.AuthUser authUser = new ServiceReference1.AuthUser();
authUser.Uname = "****";
authUser.Pwd = "******";
string result = ws.InsertCustomer(authUser,"test", "test", "test", "test"); // here I need to pass authUser as parameter
Console.WriteLine(result);
Console.ReadLine();
}
В других примерах у людей была эта строка
webService.AuthHeaderValue = authentication;
Но в моем коде я не могу найти AuthUserValue и, если возможно, я не хочу передавать эти значения аутентификации в качестве параметра в WebMethod.
Это единственный способ или я что-то упустил?
Спасибо.