调用ApiController方法时找不到资源

时间:2018-07-21 13:52:15

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

当我尝试调用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

1 个答案:

答案 0 :(得分:1)

可能是您输入了错误的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