C# api控制器中的多个HttpPost方法会导致500个内部服务器错误
在我的api控制器中有两个HttpPost方法,当我点击api时,我得到500个内部服务器错误 但令人惊讶的是,当我删除其中一个HttpPost方法时,我能够成功地点击我的api并检索到我想要的信息 知道有什么问题吗 这是两种方法C# api控制器中的多个HttpPost方法会导致500个内部服务器错误,c#,asp.net-web-api,C#,Asp.net Web Api,在我的api控制器中有两个HttpPost方法,当我点击api时,我得到500个内部服务器错误 但令人惊讶的是,当我删除其中一个HttpPost方法时,我能够成功地点击我的api并检索到我想要的信息 知道有什么问题吗 这是两种方法 [HttpPost] [ActionName("PostUser")] public HttpResponseMessage PostUser([FromBody]string id) { var accessToken
[HttpPost]
[ActionName("PostUser")]
public HttpResponseMessage PostUser([FromBody]string id)
{
var accessToken = id;
var client = new FacebookClient(accessToken);
dynamic result = client.Get("me", new { fields = "name,email" });
string name = result.name;
string email = result.email;
var existingUser = this.Repository.FindByUserIdentity(name);
if (existingUser == null)
{
var newUser = new User
{
Username = name,
Email = email,
};
var success = this.Repository.CreateAccount(newUser);
if (!success)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
//return created status code as we created the user
return Request.CreateResponse<User>(HttpStatusCode.Created, newUser);
}
return Request.CreateResponse(HttpStatusCode.OK);
}
[HttpPost]
[ActionName("PostEmail")]
public HttpResponseMessage PostEmail([FromBody]string id)
{
var accessToken = id;
var client = new FacebookClient(accessToken);
dynamic result = client.Get("me", new { fields = "email" });
string name = result.name;
string email = result.email;
var existingUser = this.Repository.FindByUserIdentity(name);
if (existingUser == null)
{
var newUser = new User
{
Email = email
};
var success = this.Repository.CreateAccount(newUser);
if (!success)
{
return Request.CreateResponse(HttpStatusCode.InternalServerError);
}
//return created status code as we created the user
return Request.CreateResponse<User>(HttpStatusCode.Created, newUser);
}
return Request.CreateResponse(HttpStatusCode.OK);
}
这是因为您的控制器中有两个Post方法,而covention WebApi只允许一个Post方法 要配置两个或多个Post方法,必须配置路由设置 有关详细信息,请查看以下答案
你能发布路线配置吗?@CuongLe发布了路线配置,非常感谢!!:我一整天都在为这事绞尽脑汁!!
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Competition", action = "all", id = UrlParameter.Optional }
);
}