gpt4 book ai didi

asp.net-mvc - 为什么无法导航到Web API Controller

转载 作者:行者123 更新时间:2023-12-04 03:37:29 24 4
gpt4 key购买 nike

我第一次使用Web API将移动应用程序连接到Web API。
我有MVC 5项目,并且创建了API文件夹,并且在内部创建了ProductsController

namespace DDD.WebUI.API
{
public class ProductsController : ApiController
{
public string GetAllProducts()
{
return "Hello From WebAPI";
}

}
}

我试图从浏览器访问此方法:
http://localhost:21879/DDD.WebUI/API/products/GetAllProducts

但我得到404。
这可能是愚蠢的,但无法弄清楚:(
更新
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

routes.MapRoute(
name: "DefaultApi",
url: "API/{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);

routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);



}

更新2
我有一点进步:
我有更新 Application_Start()与:
GlobalConfiguration.Configure(WebApiConfig.Register);
RouteConfig.RegisterRoutes(RouteTable.Routes);

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

我仍然将API Controller 存储在Project/Api/ProductsController中
但是现在我可以访问它,但仍然无法从中获取值(value):
http://localhost:21879/api/products/getallproducts

但是我得到的错误是:
<Error>
<Message>The request is invalid.</Message>
<MessageDetail>
The parameters dictionary contains a null entry for parameter 'id' of non-nullable type 'System.Int32' for method 'System.String Get(Int32)' in 'GSL.WebUI.Api.ProductsController'. An optional parameter must be a reference type, a nullable type, or be declared as an optional parameter.
</MessageDetail>
</Error>

最佳答案

我认为在查看更新时,您的操作需要id,它是不可为空的int,并且您没有提供它,只需将url修改为http://localhost:21879/API/products/GetAllProducts/2即可,此处'2'已分配给'id',它将起作用。

在WebApiConfig中,将路由修改为:

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

只需更改此Mvc路线:
    routes. MapRoute(
name: "DefaultApi" ,
url: "API/{controller}/{action}/{id}" ,
defaults: new { controller = "Home" , action = "Index" , id = UrlParameter .Option
);

有了这个 :
     routes. MapRoute(
name: "DefaultApiMvc" ,
url: "APIMvc/{controller}/{action}/{id}" ,
defaults: new { controller = "Home" , action = "Index" , id = UrlParameter .Option
);

因为否则Mvc和Api路由会相互冲突...

关于asp.net-mvc - 为什么无法导航到Web API Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25484176/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com