【问题标题】:No action was found on the controller 'UpTourism' that matches the request.- MVC4 web api在与请求匹配的控制器“UpTourism”上未找到任何操作。- MVC4 web api
【发布时间】:2015-10-13 05:51:42
【问题描述】:

我在 mvc 4 中创建了一个 web api。我的控制器是-

 [HttpPost]
    public string signIn(string socialId, string email)
    {
        try
        {
            using (TourismModelContainer db = new TourismModelContainer())
            {
                var user = (from log in db.UserDetails
                            where ((log.FacebookId == socialId || log.GoogleId == socialId) && log.IsActive==true)
                            select new { log.Id, log.Mobile, log.Gender, log.Country }).FirstOrDefault();
                if (user != null)
                {
                    string json = new Utills().ObjectToJson(user); ;
                    if (email == null || email == "")
                    {
                        return json;
                    }
                    else
                    {
                        bool isEmail = db.UserDetails.Where(o=>o.IsActive==true).Any(obj => obj.Email == email);
                        if (isEmail)
                            return "1";
                        else
                            return json;
                    }
                }
                else
                {
                    return "-1";
                }
            }
        }
        catch (Exception ex)
        {
            return "";
        }
    }

我的 WebApiConfig.cs 文件是

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

我的路线配置是 -

 public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            name: "Default",
            url: "api/{controller}/{action}/{id}",
            defaults: new { id = UrlParameter.Optional }
        );
    }

但是当我调用此登录服务时,我收到以下错误-

{ "Message": "没有找到与请求 URI 'http://localhost:58851/api/UpTourism/signIn' 匹配的 HTTP 资源。", "MessageDetail": "在控制器 'UpTourism' 上找不到与请求匹配的操作。" }

请帮我解决这个问题。

【问题讨论】:

  • 确保您的控制器名称为 (UpTourismController)
  • 是的,它的 UpTourismController。
  • 请发布 Controller 类本身的代码(使用单个空操作,没有理由显示与路由无关的代码墙),对 RegisterRoutes/Register 方法的实际调用以及如何调用方法(无论您使用什么来构建发布请求)。
  • 我正在使用邮递员进行发布请求。上面提到了我的路由和 webapi 配置。
  • 控制器和 API 路由进入同一路径并不好 *api*/{controller}/{action}/{id}

标签: c# asp.net-mvc asp.net-mvc-4


【解决方案1】:

试试这个:

HttpPost 期间,您只能向操作发送一个参数。因此,将您在类中的两个参数合并并发送该对象更加容易和方便。我创建了一个Demo 类。我的控制器是@987654329 @。

【讨论】:

  • 在 HttpPost 期间,您只能向操作发送一个参数 - 这根本不是真的。
  • 我认为这是一个经验法则 - @Rob
  • @Rob:我以前也和你一样相信,但是当谈到 Web Api 1.0 路由的糟糕实现时,我就失去了信心。
猜你喜欢
  • 2013-05-26
  • 1970-01-01
  • 1970-01-01
  • 2015-08-30
  • 2017-09-25
  • 2015-08-13
  • 2013-04-24
  • 1970-01-01
相关资源
最近更新 更多