StackifyによるRetraceを使用してアプリケーションを監視し始めたところ、次のような何千ものエラーが発生しました。
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
これらのエラーは1日に何千回も発生しており、その理由を理解することはできません。まず、私のアプリケーションは次のように機能します。
MVCフロントエンド-Windows認証を使用(RestSharpを使用してバックエンドを呼び出す)
RestSharpNTLM認証から渡されたWindows認証を使用するWebAPIバックエンド。
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でわかることから、すべてのページで発生しているようです。
FindByIdentity
のオーバーロードがあり、identityValue
が実際に何であるかを指定できます。
Try UserPrincipal.FindByIdentity(context, IdentityType.SamAccountName, User.Identity.Name);
GUIDはこの呼び出しの有効なオプションであるため、非特定のオーバーロードを使用すると問題が発生するようで、おそらく値が何であるかをスニッフィングしようとします。