C# 500内部:找到多个与请求匹配的操作
AJAXC# 500内部:找到多个与请求匹配的操作,c#,ajax,asp.net-web-api,routing,C#,Ajax,Asp.net Web Api,Routing,AJAX $.ajax({ url: '../api/TechViews/SView', type: 'POST', dataType: 'json', data: JSON.stringify({ Filter: JSON.stringify(eth.Data), Type: $('.productType.active').data('name'), Name:
$.ajax({
url: '../api/TechViews/SView',
type: 'POST',
dataType: 'json',
data: JSON.stringify({ Filter: JSON.stringify(eth.Data), Type: $('.productType.active').data('name'), Name: $('#txtView').val() }),
global: false,
contentType: "application/json; charset=utf-8",
success: function (data) {
alert('success');
},
error: function (xhrequest, ErrorText, thrownError) {
alert('Fail');
}
});
控制器
[Route("SView")]
[HttpPost]
public string Post([FromBody]TechViewsModel value)
{
string result = string.Empty;
return result;
}
[Route("DView")]
[HttpPost]
public string Post([FromBody]TechViewsModel value)
{
string result = string.Empty;
return result;
}
Route
使用的名称空间是AttributeRouting.Web.Mvc
。在AJAX
调用中,我得到两个错误,如500(内部服务器错误)
TechView
SView
“Message”:“发生了错误”,“ExceptionMessage”:“找到了多个与请求匹配的操作:\r\nSystem.String Post
RouteConfig
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Login", action = "LoginPage", id = UrlParameter.Optional }
);
}
我试过了
HttpPost
HttpPost
和Route
路线的帖子时,同样的代码也可以正常工作
我哪里错了?在api路由配置中启用config.maphttpAttribute路由()
选项
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API configuration and services
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
}
}
在global.asax.cs中
GlobalConfiguration.Configure(WebApiConfig.Register);
并安装HelpPage nuget软件包,将通过“../api/help”向您提供api路由文档,有助于解决此类问题。已安装但没有帮助。此外,GlobalConfiguration没有用于配置的定义。是吗?请检查用于GlobalConfiguration的命名空间,它应该是System.Web.Http from System.Web.Http.WebHost.dll中的System.Web.Http是的,但我仍然没有安装.Microsoft.AspNet.WebApi.WebHost软件包?这两个操作不能存在于同一个控制器类中。C#不允许。它们具有相同的名称、参数和返回类型。@juunas告诉我实现这一点的替代方法是什么?