C# 为什么webapi2属性路由不起作用?

C# 为什么webapi2属性路由不起作用?,c#,asp.net-web-api2,asp.net-mvc-routing,C#,Asp.net Web Api2,Asp.net Mvc Routing,我一直在为基于属性路由的WebApi2设置而苦苦挣扎,我已经想不出问题出在哪里了。以下代码是VisualStudio2015新创建的WebApi项目。它没有变化。它根本不起作用 答复如下: 未找到与请求URI名称匹配的HTTP资源http://.../services/webapi2/api/dummies/dummymethod'. 未找到与名为“dummies”的控制器匹配的类型。 到目前为止我所做的: 我已经检查了文档,是否遗漏了一些内容-所有内容似乎都很好,适合文档。 我在这里检查了可用

我一直在为基于属性路由的WebApi2设置而苦苦挣扎,我已经想不出问题出在哪里了。以下代码是VisualStudio2015新创建的WebApi项目。它没有变化。它根本不起作用

答复如下:

未找到与请求URI名称匹配的HTTP资源http://.../services/webapi2/api/dummies/dummymethod'. 未找到与名为“dummies”的控制器匹配的类型。 到目前为止我所做的:

我已经检查了文档,是否遗漏了一些内容-所有内容似乎都很好,适合文档。 我在这里检查了可用的答案,是否发现了有用的东西——我尝试了所有我发现的东西,但都没有成功 提前谢谢你的帮助

DummyController.cs

使用System.Web.Http; 命名空间WebApi2.Controllers { [RoutePrefix假人] 公共类虚拟:ApiController { [常规方法] 公共字符串获取 { 返回asdasd; } } } WebApiConfig.cs

使用制度; 使用System.Collections.Generic; 使用System.Linq; 使用System.Web.Http; 命名空间WebApi2 { 公共静态类WebApiConfig { 公共静态无效注册表HttpConfiguration配置 { //Web API配置和服务 //Web API路由 config.maphttpAttribute路由; config.Routes.MapHttpRoute 名称:DefaultApi, routeTemplate:api/{controller}/{id}, 默认值:新建{id=RouteParameter.Optional} ; } } } 已安装的软件包:

<?xml version="1.0" encoding="utf-8"?>
<packages>
  <package id="Microsoft.AspNet.WebApi" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Client" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.Core" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.AspNet.WebApi.WebHost" version="5.2.3" targetFramework="net452" />
  <package id="Microsoft.CodeDom.Providers.DotNetCompilerPlatform" version="1.0.0" targetFramework="net452" />
  <package id="Microsoft.Net.Compilers" version="1.0.0" targetFramework="net452" developmentDependency="true" />
  <package id="Newtonsoft.Json" version="6.0.4" targetFramework="net452" />
</packages>

您正在使用路由前缀仅为dummies的属性路由,因此它将映射到此URL

http://.../services/webapi2/dummies/dummymethod
因此,要么使用上述URL,要么更新路由前缀以包含api,以匹配示例中使用的URL

namespace WebApi2.Controllers
{
    [RoutePrefix( "api/Dummies" )]
    public class Dummy : ApiController
    {
        //GET api/dummies/dummymethod
        [HttpGet]
        [Route("dummymethod")]
        public string Get()
        {
            return "asdasd";
        }
    }
}

以上内容与请求URI匹配http://.../services/webapi2/api/dummies/dummymethod

您使用的属性路由的路由前缀仅为dummies,因此它将映射到此URL

http://.../services/webapi2/dummies/dummymethod
因此,要么使用上述URL,要么更新路由前缀以包含api,以匹配示例中使用的URL

namespace WebApi2.Controllers
{
    [RoutePrefix( "api/Dummies" )]
    public class Dummy : ApiController
    {
        //GET api/dummies/dummymethod
        [HttpGet]
        [Route("dummymethod")]
        public string Get()
        {
            return "asdasd";
        }
    }
}
以上内容与请求URI匹配http://.../services/webapi2/api/dummies/dummymethod