次のように、コントローラーを備えた Web API サービスがあります。
RoutePrefix("api/Product")]
public class ProductController : ApiController
{
[HttpPost]
[POST("InsertProduct")]
public HttpResponseMessage InsertProduct(ProductDetail product)
{
//logic
}
[HttpGet]
[GET("Item/{itemId}/{itemtypeid}")]
public List<ProductDetail> GetProduct(int itemId, long itemtypeid)
{
//logic
return response;
}
}
ここで、GET要求は、Postman ツール(chrome Rest サービス テスター URL) とクライアント(以下を参照) の両方から機能しています。POST要求は、Postman ツールで正常に機能します。しかし、クライアントから同じコードを試すと、「StatusCode: 404, ReasonPhrase: 'Not Found'」というエラーが表示されます。
クライアントコード:
HttpClient client = new HttpClient();
client.BaseAddress = new Uri("http://localhost/ProductService/");
client.DefaultRequestHeaders.Accept.Add(
new MediaTypeWithQualityHeaderValue("application/json"));
string serializedContent = JsonConvert.SerializeObject(new ProductDetail());
StringContent stringContent = new System.Net.Http.StringContent(serializedContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = client.PostAsJsonAsync<ProductDetail>("api/Product/InsertProduct", new ProductDetail()).Result;
同じリクエストが外部ツールからはどのように機能しますが、httpclient からは機能しませんか。
これで私を助けてください。