首页 > 解决方案 > 调用 ApiController 方法时找不到资源

问题描述

当我尝试调用 api 控制器时得到 404。但是当我尝试调用 Controller 方法时它工作正常。请帮助并让我知道是否需要任何信息。

TPServicesAPIController.cs:-

using AgentVartualOffice.Models.LogIn;
using System.Web.Mvc;
using AgentVartualOffice.Models;
using Newtonsoft.Json;
using System.Text;

namespace AgentVartualOffice.Controllers.TPServices
{
    public class TPServicesAPIController : ApiController
    {
 public string Myauth()
        {

            return "True";

        }
}
}


Global.asax.cs:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;
using System.Web.Http;


namespace AgentVartualOffice
{
    public class MvcApplication : System.Web.HttpApplication
    {
        protected void Application_Start()
        {


            AreaRegistration.RegisterAllAreas();
            WebApiConfig.Register(GlobalConfiguration.Configuration);
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            GlobalFilters.Filters.Add(new HandleErrorAttribute());

        }
    }
}

Invoke url:
http://localhost:61868/TPServicesAPI/Myauth

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

解决方案


您可能调用了错误的 URL。

默认的基于 Web API 约定的路由通常以api

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}", //<<--- default web API route template
            defaults: new { id = RouteParameter.Optional }
        );
    }
}

并且除非路由模板已更改,否则不要使用操作名称。

routeTemplate: "api/{controller}/{action}/{id}"

所以我建议你检查你的 API 配置并相应地更新被调用的 URL。

例如,通过调用:api/TPServicesAPI/Myaut


推荐阅读