4

私はWeb apiのセルフホストを使用しています:

public class TestController : ApiController
{
    [HttpPost]
    public void Testp([FromBody]string title)
    {
        Console.WriteLine("Post");
    }
}

これは単純なコントローラーで、これは私のクライアントです:

client.BaseAddress = new Uri("http://localhost:1010");
      const string englishTitle = "TesteDelete";
      var post = client.PostAsync("Test/Testp", new
      {
                    title = englishTitle
                }, new JsonMediaTypeFormatter());
                var result = post.Result;
                if (result.IsSuccessStatusCode)
                {

                }
                else
                {
                    string content = result.Content.ReadAsStringAsync().Result;

                }

なぜ私の結果は:

{StatusCode: 404, ReasonPhrase: 'Not Found', Version: 1.1, Content: System.Net.Http.StreamContent, Headers:
{
  Date: Sun, 21 Apr 2013 12:00:03 GMT
  Server: Microsoft-HTTPAPI/2.0
  Content-Length: 165
  Content-Type: application/json; charset=utf-8
}}

モデルバインダーにエラーがあると思います

4

4 に答える 4

5

Visual Studio Webサーバーを使用してデバッグしていると思います(時計のそばで)。このポートはいつでも変更される可能性があるため、URL で指定されている「1010」ではなくなっていると思います。

"http://localhost:1010"

おそらく、現在の URL を自動的に取得するには、ここを参照する必要があります。

于 2013-04-21T12:11:00.670 に答える
1
  1. デフォルトのルーティングを使用している場合、RESTful (メソッド名による RPC ではなく、HTTP 動詞による) であるため、投稿するべきではありませんがhttp://localhost:1010/Test/Testphttp://localhost:1010/Test

  2. アクション署名は文字列を取りますが、代わりに匿名オブジェクトを POST しています。POST は次のようになります (文字列だけを送信していることに注意してください)。

    var post = client.PostAsync("Test", englishTitle, new JsonMediaTypeFormatter());

于 2013-04-22T03:04:09.403 に答える