Отсутствует параметр в веб-службе C #

Я создаю веб-службу в C #:

[WebMethod]
[ScriptMethod(UseHttpGet = true)]
public void upd(string id, string upddate,string pm)
{
    SqlCommand cmd = new SqlCommand("updcsuv", con);
    cmd.CommandType = CommandType.StoredProcedure;
    cmd.Connection = con;

    SqlParameter[] param =
    {
        new SqlParameter("@id",id),
        new SqlParameter("@upddate",upddate),
        new SqlParameter("@username",pm)

    };
    cmd.Parameters.AddRange(param);
    con.Open();
    cmd.ExecuteNonQuery();
    con.Close();
}

и хранимая процедура для веб-службы

CREATE proc updcsuv             
    (@id int,              
     @upddate datetime,              
     @username varchar(30))              
as              
begin            
    update csuv              
    set date = @upddate,              
        UserName = @username,
    where 
        id = @id              
end 

Я получаю сообщение об ошибке в своем веб-сервисе, и я не понимаю, почему происходит ошибка, поскольку я считаю, что мой веб-сервис правильный, и я правильно прошел все параметры

Это ошибка

System.InvalidOperationException: Отсутствует параметр: новый SqlParameter ("@ upddate", upddate) ..
в System.Web.Services.Protocols.ValueCollectionParameterReader.Read (коллекция NameValueCollection)
в System.Web.Services.Protocols.HtmlFormParameterReader.Read (запрос HttpRequest )
в System.Web.Services.Protocols.HttpServerProtocol.ReadParameters ()
в System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest ()

c#,asp.net,sql-server,web-services,wcf,

1

Ответов: 1


1 "> принят

Как вы сказали, ваша проблемная строка upddateИтак, вы указываете в своих параметрах запроса, которые upddateявляются datetimeтипом. Но вы даете ему строку. Таким образом, это может создать проблему, также я полагаю, что ваша строка пуста, и вы забыли добавить свой, DateTimeкоторый вы создали до этого.

if (upddate.ToString() == "")
{
    dt = Convert.ToDateTime("01-01-1900", enGB);
}
else
{
    dt = Convert.ToDateTime(date, enGB);
}

//when you go to the params, set dt for upddate instead of your string.
SqlParameter[] param =
{
    new SqlParameter("@id",id),
    new SqlParameter("@upddate",dt),
    ....
}

РЕДАКТИРОВАТЬ

Если вам нужна дата обновления, вы должны просто написать вот так:

if (upddate.ToString() == "")
{
    dt = DateTime.Now;-> this will return you current date, which will be the update date !
}
C #, asp.net, SQL-сервер, веб-сервисы, ФОС,
Похожие вопросы