Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何为.NET WEBAPI设置基本路由?_C#_Asp.net_Asp.net Web Api_Asp.net Web Api2_Asp.net Web Api Routing - Fatal编程技术网

C# 如何为.NET WEBAPI设置基本路由?

C# 如何为.NET WEBAPI设置基本路由?,c#,asp.net,asp.net-web-api,asp.net-web-api2,asp.net-web-api-routing,C#,Asp.net,Asp.net Web Api,Asp.net Web Api2,Asp.net Web Api Routing,我试图学习.NET Web API,因此我决定遵循以下非常简单的介绍: 然而,我甚至不能让它工作。我直接复制和粘贴代码以确保没有犯错误,但当我运行代码时,尝试访问api/products/2之类的路径会返回404 查看我的项目,我没有看到任何将路径路由到控制器的方法。Web.config中唯一相关的内容是: <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Hand

我试图学习.NET Web API,因此我决定遵循以下非常简单的介绍:

然而,我甚至不能让它工作。我直接复制和粘贴代码以确保没有犯错误,但当我运行代码时,尝试访问api/products/2之类的路径会返回404

查看我的项目,我没有看到任何将路径路由到控制器的方法。Web.config中唯一相关的内容是:

<add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" />
这似乎也不起作用。目前我只知道WebApiConfig.cs和上面链接的指南中描述的代码。有人知道我还缺什么吗

注意:我使用的是VisualStudio社区。我认为专业版本可能有助于连接这些东西,但我将不得不手动完成

编辑:添加完整代码:

Product.cs

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

public class ProductController : ApiController
{
    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);
        }
    }
}
公共类ProductController:ApicController
{
公共类产品控制器:ApiController
{
产品[]产品=新产品[]
{ 
新产品{Id=1,Name=“番茄汤”,Category=“杂货”,Price=1},
新产品{Id=2,Name=“Yo”,Category=“Toys”,Price=375万},
新产品{Id=3,Name=“Hammer”,Category=“Hardware”,Price=16.99M}
};
公共IEnumerable GetAllProducts()
{
退货产品;
}
公共IHttpActionResult GetProduct(int id)
{
var product=products.FirstOrDefault((p)=>p.Id==Id);
如果(产品==null)
{
返回NotFound();
}
返回Ok(产品);
}
}
}
所以我让它工作了:

创建global.aspx时使用:

<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);
    }
</script>
现在一切正常。我只是想知道如何注册路线。

所以我让它工作起来:

创建global.aspx时使用:

<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);
    }
</script>
现在一切正常。我只是想知道如何注册路线。

所以我让它工作起来:

创建global.aspx时使用:

<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);
    }
</script>
现在一切正常。我只是想知道如何注册路线。

所以我让它工作起来:

创建global.aspx时使用:

<script runat="server">
    void Application_Start(object sender, EventArgs e) 
    {
        WebApiConfig.Register(System.Web.Http.GlobalConfiguration.Configuration);
    }
</script>

现在一切正常。我只是想知道如何注册路线。

你注册路线的方式不是标准的

下面是注册路由的命令方式。原因是您稍后将以相同的方式注册过滤器

Global.asax WebApiConfig.cs
注册路线的方式不标准

下面是注册路由的命令方式。原因是您稍后将以相同的方式注册过滤器

Global.asax WebApiConfig.cs
注册路线的方式不标准

下面是注册路由的命令方式。原因是您稍后将以相同的方式注册过滤器

Global.asax WebApiConfig.cs
注册路线的方式不标准

下面是注册路由的命令方式。原因是您稍后将以相同的方式注册过滤器

Global.asax WebApiConfig.cs
您试图调用的操作方法是什么样子的?您能粘贴productscontroller.cs的代码吗?添加了完整代码(与链接中的代码相同)当我刚刚放入webbrowser位置栏时,操作应该是GET。所以应该调用GetAllProducts(),或者至少这是理论或目标。您试图调用的操作方法是什么样子的?您可以粘贴productscontroller.cs的代码吗?添加了完整代码(与链接中的代码相同)当我刚放入webbrowser位置栏时,操作应该是GET。所以应该调用GetAllProducts(),或者至少这是理论或目标。您试图调用的操作方法是什么样子的?您可以粘贴productscontroller.cs的代码吗?添加了完整代码(与链接中的代码相同)当我刚放入webbrowser位置栏时,操作应该是GET。所以应该调用GetAllProducts(),或者至少这是理论或目标。您试图调用的操作方法是什么样子的?您可以粘贴productscontroller.cs的代码吗?添加了完整代码(与链接中的代码相同)当我刚放入webbrowser位置栏时,操作应该是GET。所以应该调用GetAllProducts(),或者至少这是理论或目标。
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}
      );       
   }
}