2017-01-10 125 views
1

$ .http reqeust和Web API都在本地主机,但不同的应用“的请求的资源不支持HTTP方法 'POST' - 405响应

角JS(在其他asp.net应用程序

return $http({ 
    method: "POST",      
    url: config.APIURL + 'Parts', 
    data: {'final':'final'}, 
    headers: { 'Content-Type': 'application/json' } 
}); 

网页API(在单独的应用程序)

[HttpPost] 
public Part Post(string final) 
{ 
       ... 
} 

错误respon SE:

{ “消息”: “所请求的资源不支持HTTP方法 'POST'。”}

网页API 2 - 已标有[HTTPPOST]即使不需要。

我reqeust和响应报文如下:

**General** 
    Request URL:http://localhost/SigmaNest.WebAPI/api/Parts 
    Request Method:POST 
    Status Code:405 Method Not Allowed 
    Remote Address:[::1]:80 
    **Response Headers** 
    view source 
    Allow:GET 
    Cache-Control:no-cache 
    Content-Length:73 
    Content-Type:application/json; charset=utf-8 
    Date:Tue, 10 Jan 2017 13:05:59 GMT 
    Expires:-1 
    Pragma:no-cache 
    Server:Microsoft-IIS/10.0 
    X-AspNet-Version:4.0.30319 
    X-Powered-By:ASP.NET 
    **Request Headers** 
    view source 
    Accept:application/json, text/plain, */* 
    Accept-Encoding:gzip, deflate, br 
    Accept-Language:en-US,en;q=0.8 
    Connection:keep-alive 
    Content-Length:17 
    Content-Type:application/json;charset=UTF-8 
    Host:localhost 
    Origin:http://localhost 
    Referer:http://localhost/SigmaNest.Web/app/views/index.html 
    User-Agent:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36 
    **Request Payload** 
    view source 
    {final: "final"} 
    final 
    : 
    "final" 

任何一个可以请帮我解决这个405错误。

+0

请通过服务器端代码以及 –

+0

其已发布。 – dsi

回答

1

ASP.Net正在努力将您的Ajax帖子与适当的控制器操作进行匹配,因为没有一个匹配您尝试调用的操作。

在这种情况下,您正试图传递一个对象{'final':'final'},但正在接受一个字符串。 Post(string final)和ASP.Net无法将此匹配到启用了POST的任何特定操作。

您可以字符串化的JavaScript对象

return $http({ 
    method: "POST",      
    url: config.APIURL + 'Parts', 
    data: JSON.stringify({'final':'final'}), // Strinify your object 
    headers: { 'Content-Type': 'application/json' } 
}); 

或者改变你的服务器端方法接收一个类来匹配你提供的对象。例如:

// DTO MyObject - .Net will ModelBind your javascript object to this when you post 
public class MyObject{ 
    public string final {get;set;} 
} 
// change string here to your DTO MyObject 
public Part Post(MyObject final){ 
     ... 
} 
+0

非常感谢。有用。 :)谢谢你的解释。 – dsi

+0

不客气。而解释是重要的:)很多人只是发布代码 – Darren

+0

是的。对。谢谢。 – dsi

相关问题