Проверка подлинности Windows-идентификатор Guid должен содержать 32 цифры с 4 тире (xxxxxxxx-xxxx-xxxx-xxxx-XXXXXXXXXX)

Я только начал использовать Retrace от stackify для мониторинга моего приложения и видел тысячи ошибок, которые:

System.FormatException: Guid should contain 32 digits with 4 dashes (xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx).
at System.Guid.TryParseGuidWithNoStyle
at System.Guid.TryParseGuid
at System.Guid..ctor
at System.DirectoryServices.AccountManagement.ADStoreCtx.IdentityClaimToFilter

эти ошибки происходят тысячи раз в день и я не могу понять, почему? Я рад опубликовать больше кода, если это поможет определить проблему, однако сейчас я просто опубликую то, что считаю актуальным, пожалуйста, не понижайте, не давая мне возможности дать более необходимую информацию при запросе.

во-первых, мое приложение работает так:

MVC front end - использование проверки подлинности Windows (с помощью RestSharp для вызова бэкэнда)

Web API back end, используя проверку подлинности Windows, переданную из проверки подлинности RestSharp NTLM.

обертка RestSharp

    public object WebRequest<T>(string controller, Dictionary<string, string> parameters, Method apiMethod, string action)
    {
        RestClient client = new RestClient(Url + controller + "/");
        client.Authenticator = new NtlmAuthenticator();
        RestRequest request = new RestRequest(action, apiMethod);

        if (parameters != null && parameters.Count > 0)
        {
            foreach (var parameter in parameters)
            {
                request.AddParameter(parameter.Key, parameter.Value);
            }
        }

        object result = JsonToObject<T>(client.Execute(request).Content);

        return result;
    }

Вспомогательные Методы

@helper Username()
{
PrincipalContext ctx = new PrincipalContext(ContextType.Domain);

 var username = System.Web.HttpContext.Current.User.Identity.Name.Replace(@"DOMAIN", "");

@username
}

@helper UserFullName()
{
    using (var context = new PrincipalContext(ContextType.Domain))
    {
        var principal = UserPrincipal.FindByIdentity(context, User.Identity.Name);
        if (principal != null)
        {
            var fullName = string.Format("{0}", principal.DisplayName);
            @fullName
        }
    }
}

любые предложения о том, где эта ошибка может происходить или что я могу сделать, чтобы сузить его? Кажется, это происходит на каждой странице. от того, что я могу сказать в Stackify.

1 ответов


происходит перегрузка FindByIdentity что позволяет указать, что identityValue на самом деле, т. е.

Try UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, User.Identity.Name);

поскольку GUID является допустимым вариантом для этого вызова, кажется, есть проблема, когда вы используете неспецифическую перегрузку, и она предположительно пытается нюхать, что такое значение.