[英]Getting POST or PUT to work in a WCF REST Service
我有一個WCF服務,我可以從它獲取,但我無法弄清楚如何PUT到它。 我只是想在每次在客戶端中使用記錄時增加一個命中字段。 這是我的一些代碼。
接口:
[OperationContract]
[WebInvoke(Method = "PUT",
ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Wrapped,
UriTemplate = "IncSMS")]
void IncSMS();
方法:
public void IncSMS()
{
var business =
(from p in _db.Businesses
where p.BusinessID == 1
select p).FirstOrDefault();
business.SMSHits += 1;
_db.SaveChanges();
}
我得到“方法不允許。”在IE中,誰能看到我做錯了什么?
干杯,
麥克風。
好吧,我問了這個問題,花了三天時間才找到應該非常簡單的答案。
所以問題最終是:如何在我的請求中添加Content-Length
標頭?
答:在鍵入瀏覽器時,不能將Content-Length
添加到URI,“因為默認情況下它會執行GET”!!! 要向頭部添加Content-Length
,必須使用調試工具,例如。 提琴手或建立表格或其他類型的客戶!
在fiddler中,您只需在“請求構建器”的“請求標題”部分中鍵入Content-Length
:0,它就會神奇地工作! 如本教程底部所示: http : //blog.donnfelker.com/2008/12/04/how-to-rest-services-in-wcf-3-5-part-2-the-post/
多謝你們,
麥克風。
不允許的方法通常意味着,在客戶端,您使用的HTTP方法與您在WCF代碼中配置的方法不匹配。 在您的情況下,您已將PUT指定為該WCF暴露服務方法的HTTP方法。 當您的屬性顯示PUT時,可能是您正在使用HTTP POST。
如果您使用Fiddler,您將能夠看到請求和響應。 如果問題如我所述,那么當您發送POST時,原始響應將如下所示:
HTTP/1.1 405 Method Not Allowed
Allow: PUT
Content-Length: 1565
Content-Type: text/html; charset=UTF-8
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Thu, 10 Nov 2011 02:17:43 GMT
響應中的“允許”標題會告訴您:請使用PUT。
如果要發送PUT
,請嘗試使用Fiddler ,這將允許您使用任何HTTP方法構建請求,修改請求標頭,查看響應標頭等。對於測試WCF服務非常有用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.