小编Nem*_*vic的帖子

当操作名称以“Async”结尾时,Asp.Net Core 3.0 CreatedAtAction 返回“没有路由匹配提供的值”

我的 CreatedAtAction 有一个奇怪的问题,如果我的方法名称以“Async”关键字结尾,当我从我的 Add 方法返回 CreatedAtAction 时,我会收到 500 错误“没有路由与提供的值匹配”。如果我将其他任何内容作为方法名称,如 GetRatePlanAs、GetRatePlanAsyncA 或 GetRatePlan,那么它就像一个魅力。

如果我添加 [ActionName("GetRatePlanAsync")] 但我不想这样做,它也会起作用。

CreatedAtAction:

return CreatedAtAction(nameof(GetRatePlanAsync), new { ... }, null);
Run Code Online (Sandbox Code Playgroud)

不起作用:

    [HttpGet]
    [Route("item")]
    public async Task<ActionResult> GetRatePlanAsync(...)
Run Code Online (Sandbox Code Playgroud)

作品:

    [HttpGet]
    [Route("item")]
    [ActionName("GetRatePlanAsync")]
    public async Task<ActionResult> GetRatePlanAsync(...)
Run Code Online (Sandbox Code Playgroud)

还工作:

    [HttpGet]
    [Route("item")]
    public async Task<ActionResult> GetRatePlan(...)
Run Code Online (Sandbox Code Playgroud)

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

11
推荐指数
1
解决办法
3502
查看次数

使用 Autofac 和 EF Core 3.1 的内存泄漏(从 2.2 迁移后)

将 EF Core 3.1.5(从 2.2 迁移后)与 Autofac 5.2.0 一起使用时,我遇到了内存泄漏。我的情况是,在主页上我加载了一些产品列表,每次重新加载页面都会增加 5-10mb 的内存使用量,内存无休止地增加。它永远不会下降。我怀疑我的注册错误(?)或者这是因为 EF Core 中的跟踪行为(?)。我尝试注册我的MyDbContext的如下:

public class DbContextModule<TContext> : Module
    where TContext : DbContext
{
    protected override void Load(ContainerBuilder builder)
    {
        base.Load(builder);

        builder
            .RegisterType<TContext>()
            .WithParameter("options", DbContextOptionsFactory.Get<TContext>())
            .InstancePerLifetimeScope();
    }
}

public class DbContextOptionsFactory
{
    public static DbContextOptions<TContext> Get<TContext>() where TContext : DbContext
    {
        var confSql = "fake";

        var builder = new DbContextOptionsBuilder<TContext>();
        DbContextConfigurer.Configure<TContext>(builder, confSql);

        return builder.Options;
    }
}

public class DbContextConfigurer
{
    public static void Configure<TContext>(DbContextOptionsBuilder<TContext> builder, string connectionString) where …
Run Code Online (Sandbox Code Playgroud)

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

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

多个客户端和一台服务器 Blazor 资产冲突

我试图在 Blazor 中拥有 2 个客户端项目和 1 个服务器项目。因此,我创建了一个新的 Blazor WebAssembly 应用程序,并选中了 https、asp.net Core 托管和渐进式 Web 应用程序检查。

现在我有 3 个自动生成的项目:客户端、服务器和共享项目。

假设我需要另一个必须与同一服务器通信的客户端项目。

我添加了一个新的 blazor 项目,选择 Blazor WebAssembly 应用程序,但这次我取消选中 ASP.NET Core 托管和渐进式 Web 应用程序(我不需要该应用程序离线工作)。

所以现在我有 2 个客户端,1 个服务器,1 个共享项目。

我要做的下一件事是将服务器的引用添加到新的客户端项目。

一切看起来都很好,直到出现此错误:

Blazor 静态资产 - 具有相同路径的冲突资产

我在 github 上找到了这个讨论:https://github.com/dotnet/aspnetcore/issues/20580

他们说你必须写入<StaticWebAssetBasePath>clientA</StaticWebAssetBasePath> <StaticWebAssetBasePath>clientB</StaticWebAssetBasePath>你的客户项目。

当我单击错误时,Visual Studio 会显示一个名为 Microsoft.Net.Sdk.Razor.StaticWebAssets.targets 的文件,并将我带到第 191 行,即:

 <ValidateStaticWebAssetsUniquePaths
      StaticWebAssets="@(_ReferencedStaticWebAssets)"
      WebRootFiles="@(_WebRootFiles)" />
Run Code Online (Sandbox Code Playgroud)

我认为我不需要修改这个文件,那么我应该修改什么?

c# visual-studio asp.net-core blazor

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

HTTP POST 请求在 Azure 应用服务上转变为 GET

我有两个应用程序,其中一个托管在 Azure 应用服务 (.NET Framework 4.8) 中,并公开(除其他外)两个接收 POST 请求的端点:

端点A:

[AcceptVerbs("GET", "POST")]
public async Task<HttpResponseMessage> EndpointA([FromUri]Guid sessionId, [FromUri]Guid transactionId, [FromBody]ADataDTO data)
Run Code Online (Sandbox Code Playgroud)

端点B:

[AcceptVerbs("GET", "POST")]
public async Task<HttpResponseMessage> EndpointB(Guid sessionId, Guid transactionId, [FromBody] BDataDTO data)
Run Code Online (Sandbox Code Playgroud)

使用 HttpClient.PostAsync 方法以相同的方式调用这两个端点:

 public async Task CallEndpointAAsync(string callbackUrl, ADataDTO data)
    {
        //... validations

        var httpClient = httpClientFactory.CreateClient();
        httpClient.DefaultRequestHeaders.Add("Accept", "application/json");

        var jsonObject = JsonConvert.SerializeObject(data, jsonSerializerSettings);
        var content = new StringContent(jsonObject, Encoding.UTF8, "application/json");
        await httpClient.PostAsync(callbackUrl, content);
    }
Run Code Online (Sandbox Code Playgroud)

public async Task CallEndpointBAsync(string callbackUrl, BDataDTO data)
    {
        //... validations …
Run Code Online (Sandbox Code Playgroud)

.net c# azure

2
推荐指数
1
解决办法
490
查看次数