簡體   English   中英

讓POST或PUT在WCF REST服務中工作

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM