【问题标题】:The resource cannot be find - .net web api找不到资源 - .net web api
【发布时间】:2018-05-16 10:49:59
【问题描述】:

我一直在尝试制作一个休息 api 端点。但是,当我测试时,它说“找不到资源”。在网络浏览器中。

这是我的控制器(它的一部分)。该方法未被访问。

[System.Web.Http.RoutePrefix("api/ticket")]
public class TicketController : ApiController
{
    private readonly ITicketService _TicketService = new TicketService();

    [System.Web.Mvc.HttpGet]
    [System.Web.Mvc.Route("Prepare/{number:string}")]
    public TicketViewModel Prepare(string number)
    {
        ...
    }

}

这是我从 RouteConfig 注册的路线:

routes.MapRoute(
    name: "Default api with parameter",
    url: "api/{controller}/{action}/{number}",
    defaults: new {
        controller = "Ticket",
        action = "Prepare",
        number = UrlParameter.Optional }
);

【问题讨论】:

  • 您正在混淆 MVC 和 Web API 路由属性和路由配置。查看您用于属性的命名空间。 RoutePrefix 使用正确的命名空间,而其他的则没有。

标签: c# .net asp.net-web-api asp.net-web-api-routing


【解决方案1】:

您正在混淆 MVC 和 Web API 路由属性和路由配置。查看您用于属性的命名空间。

RoutePrefix 使用正确的命名空间,而其他的则没有。

更新控制器

using System.Web.Http;

[RoutePrefix("api/ticket")]
public class TicketController : ApiController {
    private readonly ITicketService _TicketService = new TicketService();

    //GET api/ticket/Prepare/123456789
    [HttpGet]
    [Route("Prepare/{number}")]
    public TicketViewModel Prepare(string number) {
        //...
    }

    //...
}

没有:string 路由约束,因为字符串是默认值。

关于配置,Web API 配置通常在WebApiConfig.Register 函数中找到,您可以在其中启用属性路由并配置任何基于约定的路由。

public static class WebApiConfig {
    public static void Register(HttpConfiguration config) {
        // Attribute routing.
        config.MapHttpAttributeRoutes();

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

参考Attribute Routing in ASP.NET Web API 2

【讨论】:

  • WebApiConfig 在我正在处理的项目中不可用。只有 RouteConfig 可用。我应该创建第一个(在哪里?)并删除后者吗?
  • @AbcXyz 查看答案中提供的链接并关注。
  • 我也可以换成mvc吗?似乎更容易,因为 RouteConfig 已经为 mvc 编写了。
猜你喜欢
  • 2018-01-03
  • 2014-03-22
  • 2014-12-15
  • 2022-12-29
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
相关资源
最近更新 更多