我在小型网络API的TreeController
控制器中有以下内容:
[HttpGet("GetDirectories")]
public IActionResult GetDirectories()
{
var baseDir = _config["QuickShare:BaseDir"];
if (string.IsNullOrWhiteSpace(baseDir))
{
throw new InvalidOperationException("'QuickShare:BaseDir' is not configured");
}
var ret = GetDirectories(baseDir); ;
return Json(ret);
}
private List<DirectoryInfo> GetDirectories(string parentDir)
{
var dirInfo = new DirectoryInfo(parentDir);
return dirInfo.GetDirectories("*", SearchOption.TopDirectoryOnly).ToList();
}
当我尝试从Postman调用此动作时,我会被告知
无法获得任何回复连接时出错 http://localhost:59243/api/Tree/GetDirectories
现在,项目模板附带的默认测试控制器保持不变:
[Route("api/[controller]")]
public class ValuesController : Controller
{
// GET api/values
[HttpGet]
public IEnumerable<string> Get()
{
return new string[] {"value1", "value2"};
}
...
}
当我在Visual Studio中运行API时,我可以从Values
控制器获得正确的响应,但不是来自TreeController
,但它们几乎完全相同。并且,当我调用Tree
/ GetDirectories`动作时,该动作方法中的断点被击中,我可以单步执行我的方法所具有的几行,并且它们都可以正常执行。
只有当行动的最后一行执行时,问题才会显现:
return Json(ret);
然后我得到了邮差Could not get any response
,尽管没有例外;在调试代码时,看起来一切都应该正常工作,对Values
控制器的请求工作正常。
答案 0 :(得分:0)
您的操作方法应返回特定的结果类型(返回JsonResult
时为Json
)或IActionResult
。
示例:强>
[HttpGet("GetDirectories")]
public JsonResult GetDirectories()
{
var baseDir = _config["QuickShare:BaseDir"];
if (string.IsNullOrWhiteSpace(baseDir))
{
throw new InvalidOperationException("'QuickShare:BaseDir' is not configured");
}
var ret = GetDirectories(baseDir);
return Json(ret);
}
OR
[HttpGet("GetDirectories")]
public IActionResult GetDirectories()
{
var baseDir = _config["QuickShare:BaseDir"];
if (string.IsNullOrWhiteSpace(baseDir))
{
throw new InvalidOperationException("'QuickShare:BaseDir' is not configured");
}
var ret = GetDirectories(baseDir) ;
return Ok(ret);
}
您可以从Microsoft文档获得更多帮助:Formatting Response Data