我很抱歉,如果這個問題看起來微不足道,但對WebAPI來說是新的,我不能 獲得客戶端訪問Put方法。
這裏是我的WebAPI方法通過Put請求在WebAPI中訪問方法
public class TestController : ApiController
{
[HttpPut]
public HttpResponseMessage Put(string id)
{
var response = new HttpResponseMessage();
response.Headers.Add("Message","Success");
return response;
}
}
路由配置
//configure the webapi so that it can self host
var config = new HttpConfiguration();
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{Controller}/{action}/{id}",
defaults: new {id = RouteParameter.Optional }
);
客戶
var baseAddress="http://localhost:8000/";
var client= new HttpClient {BaseAddress = new Uri(baseAddress)};
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
HttpResponseMessage response = client.PutAsJsonAsync(baseAddress+"Test", "TestParam").Result;
Console.WriteLine(response.Content);
當我運行上面的代碼。 我得到404錯誤出於某種原因,意味着客戶端無法聯繫webapi方法。
我有三個問題。
1.如何確保客戶端可以正確調用Web API方法。
2.是否可以直接從url調用該方法? 我試過http://localhost:8000/test/Dummy但沒有運氣。
3.如果可以調用該方法,我如何確保該消息顯示在頁面上顯示「成功」。
嗨JotaBe感謝您的評論。是的,我確實使用了基於您建議的路由的代碼。即使使用http:// localhost:8000/Test/Put也不行。這應該是http:// localhost:8000/Test/IdName我通過文檔閱讀了這篇文檔,但文檔沒有足夠的解釋放置請求。 – Sike12
如果您在我的答案中使用路線,則可以使用以Put開頭的任何操作名稱。該文檔解釋了這一點:*此慣例僅適用於GET,POST,PUT和DELETE方法*。如果它不適合你,那肯定是另外一個問題。請安裝並使用郵遞員創建執行PUT請求,並讓我知道答案是什麼。像GET或POST等其他方法可以爲你工作嗎? – JotaBe
是的JotaBe。它的工作現在。非常感謝您的幫助 :) – Sike12