我刚开始使用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
这些错误每天发生数千次,我无法完全理解其原因。首先,我的应用程序的工作方式如下:
MVC前端 - 使用Windows身份验证(使用RestSharp调用后端)
Web API后端 - 使用从RestSharp NTLM身份验证传递的Windows身份验证。
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上看,它似乎在每个页面都会发生。
UserPrincipal.FindByIdentity(context, IdentityType.Name, User.Identity.Name);
- 因为您当前没有指定一个(GUID 是一个有效的选项),也许非特定重载存在问题。 - Alex K.