Привет всем и спасибо за ваше время заранее.
У меня проблема при попытке заставить работать метод REST в WCF. Метод POST, и я не могу получить значения, отправленные из запроса.
Так я объявляю службу в соответствии с примером от Microsoft о классе WebInvokeAttribute :
[OperationContract]
[WebInvoke(
Method = "POST" ,
BodyStyle = WebMessageBodyStyle.Bare ,
UriTemplate = "/sum?x={x}&y={y}" ,
ResponseFormat = WebMessageFormat.Xml )]
ResponseData Sum( string x, string y );
Вот как я реализовал эту функцию в классе:
public ResponseData Sum( string x , string y )
{
ResponseData retorn = new ResponseData();
int _x = 0;
int _y = 0;
try
{
_x = Convert.ToInt32( x );
_y = Convert.ToInt32( y );
retorn.Data = _x + _y + "";
}
catch ( Exception ex )
{
retorn.Data = "";
retorn.Error = true;
retorn.MsgError = ex.Message;
}
return retorn;
}
ResponseData - это класс, реализующий DataContract:
[DataContract]
public class ResponseData
{
private bool error = false;
private string msgError = "";
[DataMember]
public string Data { get; set; }
[DataMember]
public bool Error
{
get
{
return error;
}
set
{
error = value;
}
}
[DataMember]
public string MsgError
{
get
{
return msgError;
}
set
{
msgError = value;
}
}
}
Как видите, довольно простой пример.
Дело в том, что это не работает. Параметры x и y функций всегда имеют значение null, не имеет значения, что я отправляю вместе с запросом, поэтому возвращаемое сообщение всегда:
<responsedata xmlns="http://schemas.datacontract.org/2004/07/RestServiceProvaCrypto" xmlns:i="http://www.w3.org/2001/XMLSchema-instance"><data>0</data><error>false</error><msgerror></msgerror></responsedata>
Итак, мой вопрос: что я делаю неправильно, так как не могу получить значения, переданные в запросе для x и y?
Я работаю с VS 2008 и .Net 3.5.
Опять же, спасибо за ваше время.
Рамон М. Галларт