2011-05-05 101 views
3

以下代码在InitializeClientContextFromName失败,并且“值不在预期范围内”。它适用于其他开发人员的机器。AZMan:InitializeClientContextFromName失败,“值不在预期范围内”。

我应该跟进的任何线索?我不是很熟悉,在AzMan的所有...

private List<string> SyncAzManRoles(ActiveDirectoryMembershipProvider provider) 
    { 
     List<string> userAzManRoles = new List<string>(); 

     AzAuthorizationStoreClass store = new AzAuthorizationStoreClass(); 
     if (store == null) 
     { 
      AuthTrace("Azman store is not available"); 
      throw new InvalidOperationException("The azman store is not available"); 
     } 
     store.Initialize(0, ConfigurationManager.ConnectionStrings 
        ["LocalPolicyStore"].ConnectionString, null); 

     IAzApplication3 app = store.OpenApplication(Security.ApplicationName, null) as IAzApplication3; 
     if (app == null) 
     { 
      AuthTrace("Azman application is not available"); 
      throw new InvalidOperationException("The azman application is not available"); 
     } 

     IAzClientContext3 clientContext = null; 
     try 
     { 
      clientContext = app.InitializeClientContextFromName(_username, 
       provider.Name, null) as IAzClientContext3; 
+0

得到了同样的问题,很想找到答案! – 2011-05-06 05:15:24

回答

2

我使用InitializeClientContextFromToken方法,而不是InitializeClientContextFromName解决了这个。

在我的情况下,它被一个ASP.NET Web应用程序

ulong token = 0; 

var principal = User as WindowsPrincipal; 
if (principal != null) 
{ 
    var identity = (WindowsIdentity) principal.Identity; 

    ViewBag.Identity = identity.Name; 
    token = (ulong) identity.Token.ToInt64(); 
} 

// Server 2008 or Vista required to use IAzClientContext3 
// Using token 0 uses app pool identity 
var _clientContext = (IAzClientContext3) _azManApp.InitializeClientContextFromToken(token); 

内部使用如果在传递零作为标记值,​​为Web应用程序导致使用App池标识。否则,如果用户使用WindowsIdentity登录,则Token属性的值也起作用。

对于桌面应用程序,您可能只需使用零令牌即可使用当前用户的身份。

相关问题