2017-02-24 15 views
0

私はASP.NET MVCプロジェクトを持っています。 WebAPIを追加する必要があります。WebAPIチュートリアルの後にリソースが見つかりません

私はこのチュートリアル( https://docs.microsoft.com/en-us/aspnet/web-api/overview/getting-started-with-aspnet-web-api/tutorial-your-first-web-api)のように、モデルとコントローラを追加しよう

私はモデルを追加しました:ここ

public class Product 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public string Category { get; set; } 
    public decimal Price { get; set; } 
} 

は私のコントローラである

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Net; 
using System.Net.Http; 
using System.Web.Http; 
using SmartSolutions.Models; 

namespace SmartSolutions.Controllers 
{ 
    public class ProductsController : ApiController 
    { 
     Product[] products = new Product[] 
     { 
      new Product { Id = 1, Name = "Tomato Soup", Category = "Groceries", Price = 1 }, 
      new Product { Id = 2, Name = "Yo-yo", Category = "Toys", Price = 3.75M }, 
      new Product { Id = 3, Name = "Hammer", Category = "Hardware", Price = 16.99M } 
     }; 
     public IEnumerable<Product> GetAllProducts() 
     { 
      return products; 
     } 
     public IHttpActionResult GetProduct(int id) 
     { 
      var product = products.FirstOrDefault((p) => p.Id == id); 
      if (product == null) 
      { 
       return NotFound(); 
      } 
      return Ok(product); 
     } 
    } 
} 

ここWebApiConfigが

です
public static class WebApiConfig 
{ 
    public static void Register(HttpConfiguration config) 
    { 
     config.MapHttpAttributeRoutes(); 

     config.Routes.MapHttpRoute(
      name: "DefaultApi", 
      routeTemplate: "api/{controller}/{id}", 
      defaults: new { id = RouteParameter.Optional } 
     ); 
    } 

私はアプリを起動すると、私は私のミスがかもしれれるこの

enter image description here

がありますか?

+0

「WebApiConfig」のコードが呼び出されますか? –

+0

あなたは[email protected]について話します –

答えて

0

IDがオプションの場合は、APIコントローラのメソッドでintをnullableとして渡す必要があります。また、URLはapi/products/GetProductである必要があります。また、既に尋ねられたエラーのいずれかを行っている可能性があります質問 Web API Routing - api/{controller}/{action}/{id} "dysfunctions" api/{controller}/{id}あなたの一般的なルール(デフォルトのようなもの)に先んじる特定のルールを置くのは、RouteTable.Routes.MapHttpRouteを使って "WithActionApi"と "DefaultApi"をマッピングするという意味です。

public IHttpActionResult GetProduct(int? id) 
     { 
      var product = products.FirstOrDefault((p) => p.Id == id); 
      if (product == null) 
      { 
       return NotFound(); 
      } 
      return Ok(product); 
     } 
関連する問題