我不能爲我的生活弄清楚這一點。我有一個帶有Get和Post方法的web api控制器。 Get方法在使用和不使用參數的情況下都可以正常工作,但是當我嘗試向其中添加String參數時,發佈會中斷。以下是我的代碼。ASP.NET WebApi Post Method - 404當傳遞參數
路線:
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "{controller}/{id}",
defaults: new { id = UrlParameter.Optional }
);
控制器:
public class AuditController : ApiController
{
public String Post(String test)
{
return "Success : " + test;
}
public String Get(String test)
{
return "Success : " + test;
}
}
請求:
var request = WebRequest.Create("http://localhost:42652/Audit");
request.Method = "POST";
request.ContentType = "application/x-www-form-urlencoded";
using (var writer = new StreamWriter(request.GetRequestStream()))
{
writer.Write("test=TEST");
}
WebResponse webResponse = request.GetResponse();
我試過的要求很多變化,我覺得有一些簡單的我失蹤。謝謝你的幫助。
你的路線說它有一個名爲'id'的參數,但是在你的方法中你傳遞了一個名爲'test'的參數。它會是什麼?原始類型參數總是試圖從Uri讀取,所以你的post方法將不起作用。我真的建議你通過asp.net主頁上所有非常好的ASP.Net Web API教程! – JustAnotherUserYouMayKnow
這是^^準確嗎? – Jonesopolis
是的。您的Get方法表示沒有{id}參數的路由 - 因爲您的id參數在方法中不存在。當您調用「Audit?test = value」,而不是「Audit/value」時,您的測試參數是可選查詢參數之一。你接受的答案總結得不錯,但我仍然鼓勵你真的通過教程! – JustAnotherUserYouMayKnow