C# 如何为.NET WEBAPI设置基本路由?
我试图学习.NET Web API,因此我决定遵循以下非常简单的介绍: 然而,我甚至不能让它工作。我直接复制和粘贴代码以确保没有犯错误,但当我运行代码时,尝试访问api/products/2之类的路径会返回404 查看我的项目,我没有看到任何将路径路由到控制器的方法。Web.config中唯一相关的内容是: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
<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}
);
}
}