Как мне реализовать функциональность AnonymousId\Anonymous User, найденную в (классическом 4.x) ASP.NET в ASP.NET Core 6 MVC

Я хочу реализовать или использовать функциональные возможности пользователя AnonymousId\Anonymous, имеющиеся в более старой системе ASP.NET MVC 4, но в приложении ASP.NET Core 6 MVC.

Я видел 3 пакета NuGet, которые, похоже, это делают, но 2 очень старые, а у третьего очень мало документации. В другом очень похожем вопросе пользователь KJensen (Использование анонимного идентификатора пользователя в ASP.NET Core 3.1, например Request.AnonymousID из .NET 4.x?) упомянул об использовании пакета NuGet (NuGet AnonymousID , но сказал, что обновил его для версии 3.1.

К сожалению, он не уточнил, и у меня нет очков репутации, чтобы оставить комментарий или спросить его (или я не мог понять, как это сделать). Я использую stackoverflow каждый день, но, очевидно, публикую мало.

Я многого не пробовал; Я включил пакет NuGet, о котором упоминал К. Дженсен, но, как он упомянул в своем ответе на свой вопрос, у него действительно было много зависимостей. Наверное, мне хотелось бы знать, как он его обновил и т. д. Надеюсь, это правильный механизм решения этой проблемы.

1 ответ

Его не нужно обновлять до версии. Вы можете найти соответствующую библиотеку классов в репозитории GitHub и использовать ее напрямую.

Например, я создаю библиотеку классов с именемAnonymousIdи скопируйте файл с GitHub в мою библиотеку классов:

Конечно, вам необходимо установить соответствующий пакет NuGet, чтобы он не сообщал об ошибке(Microsoft.AspNetCore.Http.Abstractions,Microsoft.AspNetCore.Http.FeaturesиMicrosoft.IdentityModel.Tokens):

Затем создайте свой проект в том же решении (ASP.NET Core 6 MVC):

Справочная библиотека классов:

      <ItemGroup>
    <ProjectReference Include="..\AnonymousId\AnonymousId.csproj" />
</ItemGroup>

Добавьте промежуточное ПО в Program.cs:

      app.UseAnonymousId();

В контроллере:

      public string Test()
{
    string anonymousId = "";
    IAnonymousIdFeature feature = HttpContext.Features.Get<IAnonymousIdFeature>();
    if (feature != null)
    {
        anonymousId = feature.AnonymousId;
    }
    return anonymousId;
}

Результат испытаний:

Это то, чего ты хочешь?