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