从MVC控制器调用Web方法返回以下错误:
“远程服务器返回一个错误:(405)方法不允许”
在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的通用方法:
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);
}
请告诉我我做错了什么,如何解决。
发布于 2014-10-02 05:00:50
HTTP方法是大小写敏感。试着:
data = proxy.UploadString(url,"POST", obj);
或
data = proxy.UploadString(url, obj); // this overloads POSTs the data
而且,HttpPost
属性是多余的,因为按照约定,Web只允许POST
用于public void Post(string lead)
。
作为一种良好的实践,Post
应该返回一个值。在最起码的情况下,状态代码201 (表示成功)或500 (表示错误)的HttpResponseMessage
以及适用的rcode。
https://stackoverflow.com/questions/26153387
复制相似问题