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調用該頁面。方法不允許在WebAPI中發帖
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 }
);
}
}
}
RouteConfig.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 }
);
}
}
}
現在,因爲我將要傳遞的數據相當數量的,我需要它傳遞中正文(而不是網址的一部分)。
但在調用中它返回錯誤405-方法不允許。但從我所看到的jquery應該發出一個post請求,並且控制器正在接受一個帖子 - 爲什麼Method不允許?
請求數據中是否有HTML,如果是這樣的話,請在你的參數中使用'[AllowHtml]'屬性。 –
不確定屬性路由是否將默認爲您的方法名稱...嘗試在您的方法上使用'[Route(「GetMissingKeys」))]。 – Jonesopolis
沒有HTML,我也嘗試過路由屬性 –