C# Api控制器方法未调用
我有一个MVC项目,我添加了一个API控制器。在这个API控制器中,我在其中创建了方法。但是,当我试图用“”Url从postman或localhost调用这个API时,它会给出以下响应C# Api控制器方法未调用,c#,asp.net-web-api,C#,Asp.net Web Api,我有一个MVC项目,我添加了一个API控制器。在这个API控制器中,我在其中创建了方法。但是,当我试图用“”Url从postman或localhost调用这个API时,它会给出以下响应 { "Message": "No HTTP resource was found that matches the request URI 'http://localhost:10133/api/BedfordBrownstoneApi/GetAgentId?username=dgsdgsdgsd&p
{
"Message": "No HTTP resource was found that matches the request URI 'http://localhost:10133/api/BedfordBrownstoneApi/GetAgentId?username=dgsdgsdgsd&password=sdgsdgs'.",
"MessageDetail": "No type was found that matches the controller named 'BedfordBrownstoneApi'."
}
我的API控制器如下所示
public class BedfordBrownstoneApi : ApiController
{
// GET api/<controller>
public int GetAgentId(string username,string password)
{
DataContext db = new DataContext();
var data = db.Set<AgentLogin>().Where(a => a.UserName==username && a.Password==password).SingleOrDefault();
return data.AgentId;
}
}
}
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "GetAgentId" }
);
}
}
在webapiconfig中的RouteComplete中添加Id参数。请检查下面的问题,是否存在与您类似的问题 检查“Benoit74B”的已接受答案。它详细地解释了这个问题。实际问题是关于您正在传递的参数- 从控制器名称BedfordBrownstoneApi中删除“API” 从 到
您是否在api配置中启用了属性路由?config.maphttpAttribute路由() 对于当前路由,您应该通过查询字符串“”点击它,并用
[FromUri]
[HttpGet]
[Route("api/BedfordBrownstoneApi/GetAgentId/")]
public int GetAgentId(string username,string password)
{
//api stuff
}
或通过路由参数点击api-
希望这对你有帮助。谢谢 有两个问题
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "GetAgentId" }
);
}
我刚刚将代码改为following,现在它可以工作了
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "BedfordBrownstoneApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "GetAgentId" }
);
}
尝试此操作-从控制器名称中删除“Api”是否存在
GlobalConfiguration.Configure(WebApiConfig.Register)代码>在您的Global.asax
文件中调用?您的api控制器名称中没有提到控制器,请选中此项将控制器类名更改为“BedfordBrownstoneApiController”@RK\u,因为我做了此更改并使用“”url调用,但问题相同
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "GetAgentId" }
);
}
public static void Register(HttpConfiguration config)
{
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "BedfordBrownstoneApi",
routeTemplate: "api/{controller}/{action}",
defaults: new { action = "GetAgentId" }
);
}