500 内部:找到多个与请求匹配的操作
Posted
技术标签:
【中文标题】500 内部:找到多个与请求匹配的操作【英文标题】:500 Internal: Multiple actions were found that match the request 【发布时间】:2017-08-29 16:25:33 【问题描述】: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
通话中,我收到2 个错误500 (Internal Server Error)
-
为
TechViews
为SView
回复是"Message":"An error has occurred.","ExceptionMessage":"Multiple actions were found that match the request: \r\nSystem.String Post
路由配置
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
更改命名约束的名称
删除参数中的FromBody
更改方法名称和参数类型。
当我只使用一个没有Route
的帖子时,相同的代码可以正常工作。
我哪里错了?
【问题讨论】:
这两个动作不能存在于同一个控制器类中。 C# 不允许这样做。它们具有相同的名称、参数和返回类型。 @juunas 让我知道实现这一目标的替代方案是什么? 【参考方案1】:在 api 路由配置中启用config.MapHttpAttributeRoutes()
选项。
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包nuget.org/packages/Microsoft.AspNet.WebApi.HelpPage,将通过'../api/help'为您提供api路由文档,有助于解决此类问题 已安装,但没有帮助。此外,GlobalConfiguration 没有 Configure 的定义。是吗? 检查用于 GlobalConfiguration 的命名空间,它应该是 System.Web.Http 来自 System.Web.Http.WebHost.dll 是的,但我还是没明白。 Microsoft.AspNet.WebApi.WebHost 包安装了吗?以上是关于500 内部:找到多个与请求匹配的操作的主要内容,如果未能解决你的问题,请参考以下文章
使用 PHP 时发布请求有效,但是当我将 Axios 与 React 一起使用时,它会失败并出现 500 内部错误,我该如何解决?