大家好,感谢您的提前。在WCF上为REST服务实施WebInvoke Method =“POST”问题
我有一个问题,试图在WCF下工作一个REST方法。该方法是POST,并且我无法检索从请求发送的值。
这是根据从微软有关WebInvokeAttribute Class个例我如何申报服务:
[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;
}
}
}
正如你可以se e,一个很简单的例子。
事情是它不起作用。 THA 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>
所以我的问题是,什么我m我做错了,因为我无法获得请求传递给x和y的值?
我正在使用VS 2008和.Net 3.5。
再次感谢您的时间。
拉蒙·M.盖勒特
你能告诉你如何发送请求? – 2010-09-10 16:14:52
嗨达雷尔,例如,从一个HTML表单的行动是POST,并有两个文本框命名为'x'和'y'。我最近看到使用Fiddler2创建一个类似于.../sum?x = 1&y = 2的url,服务器返回正确的答案,而从Web浏览器发送的相同url返回Invalid Method。此外,我想要的是传递的值不是来自url,而是作为请求的主体,因为它会在post请求中。但以这种方式使用Fiddler2或者发布帖子形式的结果是我在帖子中提到的,x和y为null。谢谢你的时间。 – 2010-09-13 15:17:38