ASP. Net: Как мне найти, где создается экземпляр класса? - PullRequest
0 голосов
/ 08 апреля 2020

Я отлаживаю ASP. Net код API и обнаружил, что в следующей строке для identity задано значение NULL, что приводит к выдаче ошибки:

var identity = await _options.IdentityResolver(loginDetails, serverDetails);

Код, который выдает ошибку:

    if (identity == null)
    {
        var error = _options.GetFailureError();
        var errorMessage = _options.GetFailureMessage();
        context.Response.StatusCode = 400;

        switch (error)
        {
            case TokenError.HostRetrieval:
                await context.Response.WriteAsync("Could not retrieve the login servers for this device");
                break;
            case TokenError.HostValidation:
                await context.Response.WriteAsync("Could not validate the login servers for this device");
                break;
            case TokenError.UserLogin:
                var message = String.IsNullOrEmpty(errorMessage) ? "Error occured while trying to authenticate user" : errorMessage;
                await context.Response.WriteAsync(message);
                break;
            default:
                await context.Response.WriteAsync("Error occured while trying to log in");
                break;
        }

        return;
    }

В случае коммутатора ошибка составляет TokenError.HostValidation. loginDetails и serverDetails такие, какими они должны быть, поэтому я предполагаю, что _options.identityResolver - это проблема, поэтому я ищу, где установлен _options.identityResolver. Все это происходит в классе с именем TokenProviderMiddleware, который начинается следующим образом:

public class TokenProviderMiddleware
    {
        private readonly RequestDelegate _next;
        private readonly TokenProviderOptions _options;
        private readonly JsonSerializerSettings _serializerSettings;
        ...

Проблема в том, что единственное место в коде, где я могу найти ссылки TokenProviderMiddleware, это строка:

app.UseMiddleware<TokenProviderMiddleware>(Options.Create(tokenProviderOptions));

и когда я устанавливаю точку останова на этой линии, она не попадает в цель. Так что я не могу понять, где установлен _options.identityResolver.

Кто-нибудь знает, как мне к этому подойти? Этот код использует CustomTokenProvider, а не SimpleTokenProvider.

...