【发布时间】: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