簡體   English   中英

ASP.NET WebApi Post方法 - 404傳遞參數時

[英]ASP.NET WebApi Post Method - 404 When Passing Parameters

我不能為我的生活弄清楚這一點。 我有一個帶有Get和Post方法的web api控制器。 使用和不使用參數時,Get方法可以正常工作,但是當我嘗試向其添加String參數時,帖子會中斷。 以下是我的代碼。

路線:

        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();

我已經在請求上嘗試了很多變化,我覺得我有一些簡單的缺失。 謝謝你的幫助。

由於您希望參數test來自請求的主體,因此您需要使用FromBody屬性來裝飾它。 示例: ([FromBody]String test) 對於其他復雜類型,情況並非如此:例如:隱式地認為來自Body的Employee類。

等待GET請求。 它應該只適用於來自查詢字符串/Audit?test=Mike

以下博客文章提供了有關參數綁定的更多詳細信息: http//blogs.msdn.com/b/jmstall/archive/2012/04/16/how-webapi-does-parameter-binding.aspx

另外,我看到你正在使用WebRequest。 您是否考慮過使用System.Net.Http中的HttpClient?

更改AuditController以包含FromBody屬性:

public class AuditController : ApiController
{
    public String Post([FromBody]String test)
    {
        return "Success : " + test;
    }

    public String Get(String test)
    {
        return "Success : " + test;
    }
}

比照 http://msdn.microsoft.com/en-us/library/system.web.http.frombodyattribute(v=vs.108).aspx

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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