Web API 2 - 找不到与请求 URI 匹配的 HTTP 资源



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

路线如下所示:

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

我在文件夹 Project.Web/Controllers 中添加了一个名为 TestController 的控制器,它有一个方法,它只是返回如下字符串:

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'."
}

但是如果我从Visual Studio 17启动网站,我能够毫无错误地访问localhost:portnr/api/test/get。

我试图添加[Route()][RoutePrefix()],但没有任何成功我也试图将Apicontroller移动到Project.Web/Controllers/Api中,但没有任何成功。

有谁知道为什么我可以通过本地主机访问它,而不是通过域名?

问候大卫

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

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

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

API 默认会理解,如果你去 URL "http://sampleweb.com/api/test",这将调用你的 Get 方法。

最新更新