我有2个c#asp.net项目。 1是api。 1正在消耗这个API。无法访问apicontroller方法 - 返回404
我的API:
public class MyApiController : ApiController
{
public dynamic ValidateToken(string token)
{
return myValidationMethod(token);
}
}
消费从其他项目我的API:
public class MyController : Controller
{
[HttpPost]
public ActionResult ValidateToken(string token)
{
var url = "http://localhost:1234/myapi/validatetoken";
var parameters = "token=" + token;
using (var client = new WebClient())
{
var result = client.UploadString(url, parameters);
return Json(result);
}
}
}
在项目2个,我消耗了API,client.UploadString抛出一个System.Net.WebException - 远程服务器返回错误:(404)未找到。
当我测试与铬其余客户端它的工作原理与http://localhost:1234/myapi/validatetoken?token=myToken
的API为什么Web客户端找不到呢?
解决
我这得益于合作,与一个小的变化@BrentMannering添加内容长度:
var url = "http://localhost:1234/myapi/validatetoken?token=" + token;
var request = WebRequest.Create(url);
request.Method = "POST";
request.ContentLength = 0; //got an error without this line
var response = request.GetResponse();
var data = response.GetResponseStream();
string result;
using (var sr = new StreamReader(data))
{
result = sr.ReadToEnd();
}
return Json(result);
你确定你正在做一个POST做测试? –
@ ZdravkoDanev是的。使用Chrome休息客户端POST可以工作。试用GET不会。另外client.UploadString(url,参数)使用POST。 –