你用Content-Type: application/json
做了请求,所以正文中的字符串被当作JSON字符串处理。并且JSON字符串必须用双引号引起来,并且使用\
字符(specification)应该转义特殊字符。
所以你应该发布路径为"C:\\Users\\futerm\\Downloads\\test"
。
如果你不想做的字符转义,然后再考虑做一个请求与Content-Type: text/plain
。但是,您需要修改代码以直接从请求正文中读取。
控制器操作。
[HttpPost]
public async Task<IActionResult> Post()
{
var directoryPath = await Request.GetRawBodyStringAsync();
//_log.Debug($"Got ScanDirectory request for directoryPath:{directoryPath}");
if (string.IsNullOrEmpty(directoryPath))
{
return NotFound("DirectoryPath is empty");
}
return Ok(directoryPath);
}
Helper方法:
public static class HttpRequestExtensions
{
/// <summary>
/// Retrieve the raw body as a string from the Request.Body stream
/// </summary>
/// <param name="request">Request instance to apply to</param>
/// <param name="encoding">Optional - Encoding, defaults to UTF8</param>
/// <returns></returns>
public static async Task<string> GetRawBodyStringAsync(this Microsoft.AspNetCore.Http.HttpRequest request, System.Text.Encoding encoding = null)
{
if (encoding == null)
encoding = System.Text.Encoding.UTF8;
using (var reader = new System.IO.StreamReader(request.Body, encoding))
return await reader.ReadToEndAsync();
}
}
以上的扩展方法主要是采取从Accepting Raw Request Body Content文章。
来源
2017-09-27 09:18:18
Set