小编JvR*_*JvR的帖子

在扩展中找不到 ASP.NET Core 3.0 get_HostingEnvironment() 方法

下面的代码为我尝试在新的 ASP.NET Core 3.0 API 项目中创建的某些扩展复制错误。

using ClassLibrary1;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

namespace WebApplication1
{
  public class Program
  {
    public static void Main(string[] args)
    {
      CreateHostBuilder(args).Build().Run();
    }

    public static IHostBuilder CreateHostBuilder(string[] args) =>
        Host.CreateDefaultBuilder(args)
            .ConfigureWebHostDefaults(webBuilder =>
            {
              webBuilder.UseStartup<Startup>();

              webBuilder.ConfigureAppConfiguration((context, config) =>
              {
                // this works fine
                var env = context.HostingEnvironment;
              });

              webBuilder.CustomConfigureAppConfiguration();
            })
            .ConfigureAppConfiguration((context, config) =>
            {
              // this works fine
              var env = context.HostingEnvironment;
            })
            .CustomConfigureAppConfiguration();
  }
}
Run Code Online (Sandbox Code Playgroud)

这个Extensions类需要在不同的项目中。在同一个主项目中似乎工作正常。

using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.Hosting;

// This project can …
Run Code Online (Sandbox Code Playgroud)

c# asp.net-core asp.net-core-webapi asp.net-core-3.0

12
推荐指数
1
解决办法
1万
查看次数

QueryString与主体中的ASP.NET DateTime序列化

我注意到,DateTime对于QueryString和Body之间的相同值,对象的序列化方式不同。基础值仍然是相同的正确值,但是序列化的QueryString具有DateTimeKindof Local,而Body是Utc

终点

[HttpPost]
public ActionResult Post([FromQuery] DateTime queryDate, [FromBody] DateTime bodyDate)
{
  var result = new
  {
    queryDateKind = queryDate.Kind.ToString(),
    bodyDateKind = bodyDate.Kind.ToString()
  };

  return new ObjectResult(result);
}
Run Code Online (Sandbox Code Playgroud)

请求

POST /api/values?queryDate=2019-05-12T00%3A00%3A00.000Z HTTP/1.1
Host: localhost:5000
Content-Type: application/json
cache-control: no-cache
"2019-05-12T00:00:00.000Z"
Run Code Online (Sandbox Code Playgroud)

响应

{
    "queryDateKind": "Local",
    "bodyDateKind": "Utc"
}
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?是否有可能始终序列化为相同的设置DateTimeKind

最好我不想使用ToUniversalTime()ToLocalTime()无处不在,也没有使用任何自定义IModelBinder

c# asp.net-core

5
推荐指数
1
解决办法
61
查看次数