ASP.NET Core Web API使用HttpGet等特性应引入哪个命名空间?
ASP.NET Core Web API HTTP动词特性命名空间选择方案
你应该选择 Microsoft.AspNetCore.Mvc 命名空间,各命名空间的适用场景和选择原因如下:
Microsoft.AspNetCore.Mvc:这是ASP.NET Core框架专属的MVC、Web API统一服务命名空间,你当前使用的ASP.NET Core Web API所有内置HTTP动作特性([HttpGet]、[HttpPost]、[HttpDelete]等)、路由规则、过滤器组件都在该命名空间下定义,和项目框架完全匹配,特性可以被运行时正确识别,不存在兼容性问题。System.Web.Mvc:属于.NET Framework时代的旧ASP.NET MVC 5及更早版本的专属命名空间,仅支持运行在.NET Framework上的老MVC项目,和ASP.NET Core框架完全不兼容,引入后会导致HTTP动作特性无法被识别,功能失效。System.Web.Http:属于.NET Framework时代的旧ASP.NET Web API 2及更早版本的专属命名空间,仅适用于.NET Framework下的老Web API项目,和ASP.NET Core框架不兼容,引用后会出现特性不生效、运行时报错等问题。
注意:如果你的ASP.NET Core项目中能弹出前两个命名空间的IntelliSense提示,说明项目中可能错误引入了.NET Framework版本的MVC或Web API依赖包,建议及时排查移除,避免后续出现依赖冲突。
内容的提问来源于stack exchange,提问作者Levesque Xylia
相关产品推荐
相关产品推荐

