Я не могу разместить строку в WebAPI из консольного приложения:Сообщение от консольного приложения к WebAPI
Console App:
public void Main()
{
try
{
ProcessData().Wait();
}
catch (Exception e)
{
logger.Log(LogLevel.Info, e);
}
}
private static async Task ProcessData()
{
try
{
using (var client = new HttpClient())
{
client.BaseAddress = new Uri(API_BASE_URL);
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
// HTTP POST
var response = await client.PostAsJsonAsync("api/teste", "test_api");
}
}
catch (Exception e)
{
logger.Log(LogLevel.Info, e);
}
я пытаюсь вызвать WebAPI в веб-приложения MVC4 :
namespace Heelp.Api
{
public class TesteController : ApiController
{
private readonly ICommentService _commentService;
public TesteController(ICommentService commentService)
{
_commentService = commentService;
}
public string Post(string comment)
{
var response = "OK";
try
{
_commentService.Create(new Core.DtoModels.CommentDto { CommentType = "Like", Email = "[email protected]", Message = "comment" });
}
catch(Exception e)
{
response = e.Message;
}
return response;
}
}
}
[EDIT]
После тестирования с стелькой, я получаю ошибку:
{"Message":"An error has occurred.","ExceptionMessage":"Type 'Heelp.Api.TesteController' does not have a default onstructor",
"ExceptionType":"System.ArgumentException","StackTrace":"
at System.Linq.Expressions.Expression.New(Type type)\r\n at
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.GetInstanceOrActivator(HttpRequestMessage request, Type controllerType, Func`1& activator)\r\n at
System.Web.Http.Dispatcher.DefaultHttpControllerActivator.Create(HttpRequestMessage request,
HttpControllerDescriptor controllerDescriptor, Type controllerType)"}
The Route is the Default.
Я не знаю, как его отладить, и почему он не работает.
Что я здесь делаю неправильно?
Используйте Visual Studio для отладки части кода сервера и клиента. Используйте Fiddler, чтобы проверить, что отправлено по сети.Затем, когда вы локализировали свою проблему, обновите сообщение (например, сообщения об ошибках, где вы видите неожиданное поведение и т. Д.). –
Я не думаю, что вы правильно формируете свой звонок. Строка - это одно, а JSON - другое. Вы не публикуете JSON, а действуете так, как если бы делали. Используйте client.PostAsync и удалите заголовки, связанные с JSON. –
Привет, я поставил ошибку, которую я получаю от fiddler. – Patrick