Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 500内部:找到多个与请求匹配的操作_C#_Ajax_Asp.net Web Api_Routing - Fatal编程技术网

C# 500内部:找到多个与请求匹配的操作

C# 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

 $.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告诉我实现这一点的替代方法是什么?