方法不允许在 WebAPI 中发帖
Method not allowed doing a post in WebAPI
I have a controller defined as follows
using System;
using System.Collections.Generic;
using System.Linq;
using System.Net;
using System.Net.Http;
using System.Web.Http;
namespace MissingClinics.Controllers
{
[RoutePrefix("api/appointment")]
public class AppointmentController : ApiController
{
[HttpPost]
public IHttpActionResult GetMissingKeys([FromBody]String MRNList)
{
return Ok();
}
}
}
以下 JavaScript 调用该页面。
try {
$.ajax({
type: 'POST',
url: '/api/Appointment/GetMissingKeys',
data: $('#mrnList').val(),
dataType: 'text'
}).done(function () {
alert('done!');
}).fail(function (Status, errorThrown) {
alert('Error: ' + Status.status + ' - ' + Status.statusText);
}).always(function () {
alert('All done or not');
});
}
catch (e) {
alert(e);
}
WebApi.config 如下
namespace MissingClinics
{
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 }
);
}
}
}
路由配置.cs
namespace MissingClinics
{
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
}
现在,因为我将传递大量数据,所以我需要在正文中传递它(而不是作为 URL 的一部分(。
但在调用中,它返回错误 405 - 方法不允许。但是从我所看到的情况来看,jquery 应该发出一个发布请求并且控制器正在接受一个帖子 - 那么为什么不允许使用该方法呢?
使用默认路由模板,Web API 使用 HTTP 方法来选择操作。但是,您也可以创建在 URI 中包含操作名称的路由:
routes.MapHttpRoute(
name: "ActionApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
Routing instructions
自从我使用 jquery 以来已经有一段时间了,但是
这不应该吗
data: $('#mrnList').val(),
是这个
data : {mrnList: $('#mrnList').val()}, //Or MrnList depending on your jsonformatting options
我认为数据类型也应该'json'
。
您是否尝试过向方法中添加[Route("GetMissingKeys")]
?
您是否将默认路由从 api/{action}
更改为 api/{controller}/{action}/{id}
?
ASP.NET WEB API 使用请求 HTTP 方法选择操作,有两种方法:
1.更改网页接口默认路由
WebApiConfig.cs
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{action}/{id}",
defaults: new { id = RouteParameter.Optional }
);
有了这个,你不需要改变你的html文件。
2.更改操作名称
public IHttpActionResult Post([FromBody]String MRNList)
并像这样调用JavaScript:
$.ajax("/api/Appointment",
{type:"POST",
data:$("").val()
...
}
- Don'不允许将焦点集中在自动完成的选择上
- 覆盖在赢得'不允许点击下面的标记,谷歌地图api v3
- js文件未加载js控制台say's”;不允许加载本地资源”;
- Jquery不允许来自多个选择列表的相同值
- 飞行前响应中的访问控制允许标头不允许Angularjs请求标头字段访问控制允许标题
- 不允许在文本框中使用小数
- TinyMCE全屏不允许出现模式窗口
- 不允许在字段中输入不需要的字符
- 访问控制允许标头不允许X-Requested-Wise
- Chromium内联样式不允许正确的视图
- JQuery代码语法问题?(“不允许内联控制结构”)
- 正则表达式,不允许在javascript中使用负数和小数以及零
- 不允许输入或聚焦的输入类型文本
- $interval不允许我更新前端
- 不允许使用引导清单'组件'指令
- XMLHttpRequest无法加载url Origin访问控制允许Origin不允许null
- 正则表达式允许字母数字和空格,但不允许连续两个空格
- 谷歌地图 - 用户选择不允许位置
- 方法不允许在 WebAPI 中发帖
- WebAPI DELETE - HTTP/1.1 405方法不允许