gpt4 book ai didi

c# - 调试对 Web API Controller 的请求的方法

转载 作者:行者123 更新时间:2023-11-30 18:26:36 26 4
gpt4 key购买 nike

我有一个简单的控制台应用程序,它将 json 数据发送到 Controller 。

Client.PostAsJsonAsync("http://[site].azurewebsites.net/api/Decision", report);

和 Controller :

public class DecisionController : ApiController
{
private readonly TaskManager _taskManager = new TaskManager();
[HttpGet]
public Decision Get(int id)
{
return _taskManager.GetDecision(id);
}
[HttpPost]
public void Post(Decision decision)
{
_taskManager.UpdateDecision(decision);
}
}

Visual Studio 调试器显示请求未到达 Controller (未触发断点)。控制台应用程序没有抛出任何异常,并且报告变量不等于 null。

我该如何调试?

最佳答案

您可能想看看 Fiddler这是一个调试网络请求的免费工具。基本上,它会监视通过您的机器的所有 Web 请求,并让您查看它们的外观。您也可以直接从那里生成新的。这样,您至少可以确保您的请求格式正确。

此外,我注意到当您应该在 Controller 上调用操作时,您正试图直接调用 Controller 。当您请求 GET api/Decision 时,您还需要提供一个操作方法。我对您的模型了解不多,无法正确重组您的 Controller ,但这是一个基于简单用户配置文件的示例。

public class ProfileController : ApiController
{
[HttpGet]
public string FullName()
{
return "Foo Bar";
}

[HttpPost]
public void FullName(string newName)
{
// ...
}

[HttpGet]
public int Age()
{
return 22;
}

[HttpPost]
public void Age(int newAge)
{
// ...
}
}

如您所见,HttpVERB 属性不用于将请求分派(dispatch)到 Controller 到特定方法。它用于区分相关restful Action 的不同重载。在这种情况下,它用于区分获取和设置 FullName 和 Age 属性。

如果你想保持你的 Controller 完好无损,你应该要求:

  • POST http://[site].azurewebsites.net/api/Decision/post
  • 获取 http://[site].azurewebsites.net/api/Decision/get

关于c# - 调试对 Web API Controller 的请求的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28303786/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com