C# WebAPI-HTTP405:错误的方法-使用JavaScript不支持使用的HTTP谓词
我正在从远程网页发布到Azure上的Web API。我使用以下方法:C# WebAPI-HTTP405:错误的方法-使用JavaScript不支持使用的HTTP谓词,c#,ajax,webapi,C#,Ajax,Webapi,我正在从远程网页发布到Azure上的Web API。我使用以下方法: $.ajax({ type: "POST", url: BaseHref + "/api/PIRknownPersons/", data: data, contentType: "application/json; charset=UTF-8", success: function (response) { //al
$.ajax({
type: "POST",
url: BaseHref + "/api/PIRknownPersons/",
data: data,
contentType: "application/json; charset=UTF-8",
success: function (response) {
//alert('Saved known ');
},
error: function (e) {
//alert('Unable to save Known ' );
}
});
我可能错了,但看起来Azure上的远程发布被阻止了,因为当我在本地执行时,代码工作正常。是这样吗?Azure上是否有可以关闭的设置
皮尔森-
namespace TripWeb.Controllers
{
public class PIRknownPersonsController : ApiController
{
private TripDB3Entities db = new TripDB3Entities();
// POST: api/PIRknownPersons
[ResponseType(typeof(bool))]
public HttpResponseMessage Post([FromBody]ApiPIRknownPerson APIPIRknownPerson)
{
var inst = db.Institutions.Where(x => x.RemoteID == APIPIRknownPerson.RemoteID).FirstOrDefault();
if (inst == null)
{
return Request.CreateErrorResponse(HttpStatusCode.Unauthorized, "Action Not Authorized");
}
var newPIRknownPerson = ObjectMapper.GetEfApiPIRknownPerson(APIPIRknownPerson);
try
{
db.PIRknownPersons.Add(newPIRknownPerson);
db.SaveChanges();
return Request.CreateResponse<bool>(HttpStatusCode.OK, true);
}
catch (Exception ex)
{
return Request.CreateErrorResponse(HttpStatusCode.BadRequest, ex.Message);
}
}
}
}
命名空间TripWeb.Controller
{
公共类PirKnownPersonController:ApiController
{
私有TripDB3Entities db=新TripDB3Entities();
//职位:api/PirnownPersons
[响应类型(类型(bool))]
公共HTTPResponseMessagePost([FromBody]ApiPIRknownPerson ApiPIRknownPerson)
{
var inst=db.Institutions.Where(x=>x.RemoteID==APIPIRknownPerson.RemoteID).FirstOrDefault();
如果(inst==null)
{
返回请求.CreateErrorResponse(HttpStatusCode.Unauthorized,“操作未授权”);
}
var newpirnownperson=ObjectMapper.GetEfApiPIRknownPerson(APIPIRknownPerson);
尝试
{
db.pirnownperson.Add(newpirnownperson);
db.SaveChanges();
return Request.CreateResponse(HttpStatusCode.OK,true);
}
捕获(例外情况除外)
{
返回请求.CreateErrorResponse(HttpStatusCode.BadRequest,ex.Message);
}
}
}
}
我发现了问题——或者至少我让它工作了。我做了两件事:
- 通过控制面板在Azure上启用CORS
- 将
附加到我的控制器文件的顶部[System.Web.Http.AcceptVerbs(“GET”、“POST”)]
不知道是否需要两者,但它现在仍然可以工作。看起来您正在从服务器返回405-验证您没有点击
GET
(或POST
以外的任何类型)endpoint?向我们展示PIRknownPersons
操作的代码。@HereticMonkey-根据请求添加了代码您的webapi路由配置是什么?请原谅-不确定从哪里可以得到?当帖子来自同一台服务器时,API可以很好地工作