【问题标题】:calling web api Post method error "The remote server returned an error: (405) Method Not Allowed"调用 web api Post 方法错误“远程服务器返回错误:(405)方法不允许”
【发布时间】:2014-11-27 00:04:42
【问题描述】:

从 MVC 控制器调用 Web API post 方法返回以下错误:

“远程服务器返回错误:(405) Method Not Allowed”

在 MVC 控制器下面的动作代码调用一个辅助类方法,在调试时我可以看到控制从这里移动到下一个方法:

public ActionResult Submit(FormCollection form)
{
    Lead_Options lead = new Lead_Options();            
    lead.Situation = form.GetValue("InsuranceFor").AttemptedValue;
    lead.State = form.GetValue("InsuranceState").AttemptedValue;

    Uri url= Url_Helper.GetUri(BaseUrl, service1+"Post"); // returns http://localhost:52985/api/HealthInsurance/Post

    string obj=  new JavaScriptSerializer().Serialize(lead);

    Object data = WebApi_Helper.PostData(url,obj);

    return RedirectToAction("Parameters");
}

“WebApi_Helper.PostData”是Helper类,被诉调用web api的通用方法:

   public static string PostData(Uri url,string obj)
   {
       string data = null;

       try
       {
           using (WebClient proxy = new WebClient())
           {
               proxy.Headers.Add(HttpRequestHeader.Accept, "application/json");
               data = proxy.UploadString(url,"Post", obj); //Here got error
           }
       }
       catch (Exception ex)
       {               
           throw ex;
       }
       return data;
   }

以下是 WebAPI 方法代码,但调试请求时根本不来这里

[HttpPost]
public void Post(string  lead)
{
    //leadOptService.AddListOptions(lead);
}

请指导我做错了什么以及如何解决。

【问题讨论】:

    标签: c# .net asp.net-mvc asp.net-mvc-4 asp.net-web-api


    【解决方案1】:

    HTTP 方法是case sensitive。尝试:

    data = proxy.UploadString(url,"POST", obj);
    

    data = proxy.UploadString(url, obj); // this overloads POSTs the data
    

    另外,HttpPost 属性是多余的,因为 Web Api,按照惯例,POST 只允许 public void Post(string lead)

    作为一个好的做法,Post 应该返回一个值。至少,HttpResponseMessage 的状态码为 201(成功)或 500(错误)以及其他适用的 rcode。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-04-27
      • 2021-04-05
      • 1970-01-01
      • 1970-01-01
      • 2017-10-16
      • 2019-07-05
      • 2013-12-05
      • 2012-10-26
      相关资源
      最近更新 更多