C# 在控制器上未找到任何操作';住宅旅游';与请求匹配。-MVC4 web api
我已经在MVC4中创建了一个web api。我的控制员是——C# 在控制器上未找到任何操作';住宅旅游';与请求匹配。-MVC4 web api,c#,asp.net-mvc,asp.net-mvc-4,C#,Asp.net Mvc,Asp.net Mvc 4,我已经在MVC4中创建了一个web api。我的控制员是—— [HttpPost] public string signIn(string socialId, string email) { try { using (TourismModelContainer db = new TourismModelContainer()) { var user = (from l
[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 }
);
}
但是当我调用这个登录服务时,我得到以下错误-
{
“消息”:“未找到与请求URI“”匹配的HTTP资源。”,
“MessageDetail”:“在控制器‘Uptourim’上未找到与请求匹配的操作。”
}
请帮我解决这个问题。试试这个:
在HttpPost
期间,您只能发送一个参数来执行操作。因此,将类中的两个参数组合起来并发送该对象非常简单和方便。我创建了一个Demo
类。我的控制器是CustomController
确保控制器的名称为(UpTourismController)是其UpTourismController。请发布控制器类本身的代码(使用单个空操作,没有理由显示与路由无关的代码墙)、对RegisterRoutes/Register方法的实际调用以及如何调用该方法(无论您使用什么来构造post请求)。我正在使用postman来发出post请求。我的路由和webapi配置如上所述。如果您的控制器和API路由指向同一路径*API*/{controller}/{action}/{id},那就不好了在HttpPost期间,您只能向操作发送一个参数-这根本不是真的。我认为这是一条经验法则-@Rob@Rob:我以前也像你一样相信,但当谈到Web Api 1.0路由的糟糕实现时,我正在失去信心。