小编Joh*_*ohn的帖子

使用 ajax 将表单发布到 ASP.NET Core 3.1 控制器时出现 415-Unsupported-Media-Type

我有一个基于 ASP.NET Core 3.1 的项目,在其中使用 jQuery-Unobtrusive 和jQuery-Unobtrusive-AJAX验证表单。提交表单后,我收到 HTTP 415 错误。

以下是我的控制器的代码。

[Route("api/[controller]"), ApiController]
public class ScheduleController : ControllerBase
{
    private readonly IEmailSender Emailer;

    public ScheduleController(IEmailSender emailer)
    {
        Emailer = emailer;
    }

    [HttpPost(Name = "Schedule"), ValidateAntiForgeryToken]
    public async Task<ActionResult<bool>> Schedule([FromBody]Schedule viewModel)
    {
        if (!ModelState.IsValid)
        {
            return Problem(false);
        }

        bool sent = await Emailer.SendEmailAsync("Schedule Request", viewModel.GetMessage());

        return Ok(sent);
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我的表格的精简版本

<form asp-route="Schedule" data-ajax="true" data-ajax-method="POST" data-ajax-begin="onBegin" data-ajax-failure="onFailed" data-ajax-success="onSuccess">
@* fields... *@
</form>
Run Code Online (Sandbox Code Playgroud)

我尝试更改[FromBody]为[FromForm]并尝试将其完全删除,但似乎没有任何方法可以修复此错误。

这是原始请求标头

Host: localhost:1234
User-Agent: …
Run Code Online (Sandbox Code Playgroud)

jquery unobtrusive-validation asp.net-core asp.net-core-3.0 asp.net-core-3.1

3
推荐指数
1
解决办法
5422
查看次数

在将 DbContext 添加到服务之前,我可以从容器获取服务吗?

我有一个基于 ASP.NET Core 3.1 的应用程序。我通常会DbContext使用这样的东西来注册

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<AppDbContext>(scope =>
   {
       scope.UseMySql(Configuration.GetConnectionString("ConnectionString"));
   });

   // ...
}
Run Code Online (Sandbox Code Playgroud)

但是,在本例中,我尝试使用构建在 ASP.NET Core 3.1 框架之上的OrchardCore 。我需要使用该IDbConnectionAccessor服务来获取DbConnection. 所以,我可以注册AppDbContext,我想检索IDbConnectionAccessor。

我试过这个

public void ConfigureServices(IServiceCollection services)
{
   services.AddDbContext<AppDbContext>(scope =>
   {
       var accessor = scope.GetRequiredService<IDbConnectionAccessor>();
       scope.UseMySql(accessor.CreateConnection());
   });

   // ...
}
Run Code Online (Sandbox Code Playgroud)

但该行var accessor = scope.GetRequiredService<IDbConnectionAccessor>();给了我以下错误

错误 CS1929“DbContextOptionsBuilder”不包含“GetRequiredService”的定义,并且最佳扩展方法重载“ServiceProviderServiceExtensions.GetRequiredService(IServiceProvider)”需要“IServiceProvider”类型的接收器

在注册IDbConnectionAccessor之前如何获取实例?AppDbContext

c# entity-framework-core asp.net-core asp.net-core-3.1

3
推荐指数
1
解决办法
1354
查看次数