无法在ASP.NET Core 2.0中发布原始类型 - c#

我正在将非常简单的json数据发布到.net Core 2.0 API。

当我有这样的方法时,为什么会这样:

public async Task<IActionResult> GetNewToken([FromBody]string id)

然后id为null,但是如果我将其封装在模型中:

public class RandomViewModel
{
    public string id { get; set; }
}

public async Task<IActionResult> GetNewToken([FromBody]RandomViewModel model)

然后我的ID是否正确填充?

参考方案

如果路由内容类型为([FromBody] string id),则无法像application/json那样直接从主体获取原始类型,因为mvc等待模型将json主体绑定到不是原始类型的模型。

有一些选项可从请求正文中获取基本类型

将内容类型更改为纯文本/文本。
使用StreamReader获取原始令牌字符串。
使用MVC InputFormatter

StreamReader示例:

[HttpPost]
public async Task<IActionResult> GetNewToken()
{
    using (StreamReader reader = new StreamReader(Request.Body, Encoding.UTF8))
    {  
        var token = await reader.ReadToEndAsync(); // returns raw data which is sent in body
    }
    // your code here
}

InputFormatter示例:https://weblog.west-wind.com/posts/2017/Sep/14/Accepting-Raw-Request-Body-Content-in-ASPNET-Core-API-Controllers

如何在ASP.NET Core Web应用程序中增加JSON反序列化MaxDepth限制 - c#

我们正在将ASP.NET Core 2.1与.NET Framework 4.6.2结合使用。我们有一个客户需要向我们的Web应用程序发送一个很大程度上嵌套的json结构。当他们进行此调用时,我们将输出以下日志并返回错误: 读取器的MaxDepth超过了32。路径“ super.long.path.to property”,第1行,位置42111。”我浏览了…

如何基于框架执行不同的动作? (ASP.NET 5) - c#

假设您必须将C#应用程序从.NET框架迁移到新的.NET Core,因为您希望拥有其中的一些新功能。您拥有自己的代码库,并且希望一次获得完整的工作部件,因为一次迁移所有的工作量很大。主要思想是成为未来的完全核心。我的问题是:有没有一种方法可以检查一个框架中存在但另一个框架中没有的功能?还是根据框架执行不同的动作? 参考方案 有编译器指令(#if)来检查与两个…

从Axios请求以ASP.NET Core API返回下载文件 - c#

大家好我正在尝试从Axios Request从ASP.NET Core Web API下载文件。这是我的示例API方法。 (基于此stackoverflow question的代码)[HttpPost("download")] public async Task<IActionResult> DownloadFile(){ .…

ASP.NET Core 2.0中的多个身份 - c#

我正在将ASP.NET Core 1.0应用程序迁移到ASP.NET Core 2.0。在我的启动中,我正在配置两个身份:services.AddIdentity<IdentityUser, IdentityRole>(configureIdentity) .AddDefaultTokenProviders() .AddUserStore<…

如何在启用了ASP.NET Core 2.2 EndpointRouting的情况下使用RouteDataRequestCultureProvider? - c#

我正在尝试在新的ASP.NET Core 2.2 MVC项目中使用RouteDataRequestCultureProvider。我已经阅读了Routing in ASP.NET Core上的Microsoft文档,以了解2.2中引入的更改,但是我不明白为什么“文化”不被视为URL生成的环境值。我在Startup.cs中更新了ConfigureService…