大家好,感謝您的提前。在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