Routes Web Api 2-未找到与请求URI匹配的HTTP资源

Routes Web Api 2-未找到与请求URI匹配的HTTP资源,routes,asp.net-web-api2,asp.net-apicontroller,Routes,Asp.net Web Api2,Asp.net Apicontroller,我的解决方案中有一个MVC项目,其中还包含ApicController。 我已经在IIS中设置了项目,并将其添加到主机文件中 路线如下所示: GlobalConfiguration.Configuration.Routes.MapHttpRoute( name: "DefaultApi", routeTemplate: "api/{controller}/{action}/{id}", defaults: new { id = RouteParam

我的解决方案中有一个MVC项目,其中还包含ApicController。 我已经在IIS中设置了项目,并将其添加到主机文件中

路线如下所示:

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional });
public class TestController : ApiController
{
    public string Get()
    {
        return "Test";
    }
}
我在Project.Web/Controllers文件夹中添加了一个名为TestController的控制器,它有一个方法,只返回如下字符串:

GlobalConfiguration.Configuration.Routes.MapHttpRoute(
        name: "DefaultApi",
        routeTemplate: "api/{controller}/{action}/{id}",
        defaults: new { id = RouteParameter.Optional });
public class TestController : ApiController
{
    public string Get()
    {
        return "Test";
    }
}
如果我试图通过mysite.local/api/test/get访问我的站点,我会遇到以下错误:

{
  "Message": "No HTTP resource was found that matches the request URI 'http://mysite.local/api/test/get'.",
  "MessageDetail": "No type was found that matches the controller named 'test'."
}
但是,如果我从VisualStudio17启动该网站,我就能够访问localhost:portnr/api/test/get而不会出现任何错误

我试图添加
[Route()]
[RoutePrefix()]
,但没有成功 我还尝试将ApicController移动到Project.Web/Controllers/Api中,但没有成功

有人知道为什么我可以通过localhost而不是domainname访问它吗

问候
David

当您有一个名为
Get
的操作方法时,不需要传递名称

您需要将路由配置中的更改恢复为默认配置。如果您希望使用自定义布线,请使用
Route
annotation

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

如果您转到URL“
http://sampleweb.com/api/test
”,这将调用您的
Get
方法。

嗨,Sulay,是的,我知道它默认会理解它,但即使尝试或我尝试添加routeTemplate,同样的问题也会发生:“api/{controller}/{action}/{id}”此外,由于我们需要在API中使用多个HttpGet,但仍然会收到相同的错误消息。您是否已将.net framework注册到IIS?正如我在使用localhost端口运行时所看到的,是使用IIS express运行吗?是的,我已将.net framework注册到IIS,是的,localhost正在使用IIS express运行