小编Pri*_*hal的帖子

来自 ASP.NET Core 身份的 Application Insights 用户 ID

我正在使用 .NET Core 3.1。我想User ID使用 ASP.NET Core 身份用户名填充Application Insights 中的属性。我得到了 Microsoft 的这篇文章,但它适用于完整的 .NET Framework。我还尝试了此处 给出的以下代码(我将声明更改为身份)

public class TelemetryEnrichment : TelemetryInitializerBase
{
    public TelemetryEnrichment(IHttpContextAccessor httpContextAccessor) : base(httpContextAccessor)
    {
    }

    protected override void OnInitializeTelemetry(HttpContext platformContext, RequestTelemetry requestTelemetry, ITelemetry telemetry)
    {
        telemetry.Context.User.AuthenticatedUserId =
            platformContext.User?.Identity.Name ?? string.Empty;
    }
}
Run Code Online (Sandbox Code Playgroud)

但不知道如何将其包含在管道中。我试过了,services.AddSingleton<ITelemetryInitializer, TelemetryEnrichment>();但没有帮助。Application Insights 仍显示其自己的用户 ID。

启动文件

public void ConfigureServices(IServiceCollection services)
{
    services.AddDbContext<ApplicationDbContext>(options =>
        options.UseSqlServer(
            Configuration.GetConnectionString("DefaultConnection")));

    services.AddIdentity<ApplicationUser, ApplicationRole>(
        options => { 
            options.Stores.MaxLengthForKeys = 128;
            options.User.RequireUniqueEmail = true;
            options.Password.RequiredLength …
Run Code Online (Sandbox Code Playgroud)

c# azure-application-insights asp.net-core

7
推荐指数
1
解决办法
1923
查看次数

Azure 函数从配置访问连接字符串

我在 Azure Linux 环境中托管了 Azure Function V3。我正在尝试从配置部分读取连接字符串。但我不明白。我尝试将连接字符串放在两者上,Application Settings以及Connection Strings如下所示的部分。

在此处输入图片说明

我正在使用依赖注入,我的Startup课程如下所示。

using BHD.Data.Data;
using Microsoft.Azure.Functions.Extensions.DependencyInjection;
using Microsoft.EntityFrameworkCore;
using Microsoft.Extensions.DependencyInjection;
using System;

[assembly: FunctionsStartup(typeof(BHD.AzureFunctions.Startup))]
namespace BHD.AzureFunctions
{
    class Startup : FunctionsStartup
    {
        public override void Configure(IFunctionsHostBuilder builder)
        {
            var sqlConnection = ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionString;
            builder.Services.AddDbContext<ApplicationDbContext>(
                options => options.UseSqlServer(sqlConnection));
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

即使文件中存在连接字符串,我也能NullPointerException继续,如下所示。ConfigurationManager.ConnectionStrings["DefaultConnection"].ConnectionStringlocal.settings.json

{
  "IsEncrypted": false,
  "Values": {
    "AzureWebJobsStorage": "UseDevelopmentStorage=true",
    "AzureWebJobsDashboard": "UseDevelopmentStorage=true"
  },
  "ConnectionStrings": {
    "DefaultConnection": "<My connection string>"
  }
}
Run Code Online (Sandbox Code Playgroud)

c# azure-sql-database azure-functions

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

Entity Framework Core 验证 SaveChanges 计数

我被分配了一项任务来验证使用SaveChanges(). 开发人员应该预先知道在调用时将更改多少条记录。SaveChanges()

为了实现它,我创建了一个扩展方法,用于在我使用事务的地方DbContext调用SaveChangesAndVerify(int expectedChangeCount),并将此参数与 的返回值等同SaveChanges()。如果值匹配,则提交事务,如果不匹配,则回滚事务。

请检查下面的代码,让我知道它是否有效以及我是否需要考虑任何事项。另外,有没有更好的方法来做到这一点?

public static class DbContextExtensions
{
    public static int SaveChangesAndVerify(this DbContext context, int expectedChangeCount)
    {
        context.Database.BeginTransaction();
        var actualChangeCount = context.SaveChanges();
        if (actualChangeCount == expectedChangeCount)
        {
            context.Database.CommitTransaction();
            return actualChangeCount;
        }
        else
        {
            context.Database.RollbackTransaction();
            throw new DbUpdateException($"Expected count {expectedChangeCount} did not match actual count {actualChangeCount} while saving the changes.");
        }
    }

    public static async Task<int> SaveChangesAndVerifyAsync(this DbContext context, int expectedChangeCount, CancellationToken cancellationToken = default)
    { …
Run Code Online (Sandbox Code Playgroud)

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

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