C# 为什么webapi2属性路由不起作用?
我一直在为基于属性路由的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} ; } } } 已安装的软件包: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”的控制器匹配的类型。 到目前为止我所做的: 我已经检查了文档,是否遗漏了一些内容-所有内容似乎都很好,适合文档。 我在这里检查了可用
<?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