У меня есть 2 проекта C# asp.net. 1 является api. 1 потребляет этот api.Не удается получить доступ к методу apicontroller - возвращает 404
Мой апи:
public class MyApiController : ApiController
{
public dynamic ValidateToken(string token)
{
return myValidationMethod(token);
}
}
Потребляя мой апи из другого проекта:
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, где я потребляю АНИ, client.UploadString бросает System.Net.WebException - Пульт ДУ сервер возвратил ошибку: (404) Не найдено.
Когда я проверить ИПН с хромированным клиентом остального он работает с http://localhost:1234/myapi/validatetoken?token=myToken
Почему WebClient не найти его?
решаемые
Я получил эту работу благодаря @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? –
@ Здравко Данев Да. Использование клиента хромового отдыха работает POST. Попытка с GET не делает. Также client.UploadString (url, parameters) использует POST. –