2015-06-24 90 views
0

我有3个应用程序试图在本地运行它们。无法将类型为'System.Security.Claims.ClaimsIdentity'的对象转换为键入'System.Security.Principal.WindowsIdentity'

第一个我正在运行集成测试,它正在调用第二个('中间')应用程序,该应用程序应该在本地系统上创建一个报价,然后调用公司“全球”系统负责用户管理的第三个系统。而在

protected ApplicationAuthorisationService() 
{ 
    CurrentIdentity = (WindowsIdentity)Thread.CurrentPrincipal.Identity; 
} 

铸造System.Security.Claims.ClaimsIdentitySystem.Security.Principal.WindowsIdentity

我有“负责用户管理全球系统”小知识,因为它是由其他部门处理,我仍需要调查为什么

它失败我的本地机器上的测试失败。

“中间”的应用程序构建网址和简单的调用由全球一个GET

private HttpClient GetHttpClient() 
{ 
    try 
    { 
     var client = new HttpClient 
     { 
      BaseAddress = this.BaseUri, 
     }; 

     client.DefaultRequestHeaders.Accept.Clear(); 
     client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); 
     return client; 
    } 
    catch (Exception ex) 
    { 
     ILogHelper.LogException(ex, Log, LoggerLevel.Error); 
     throw; 
    } 
} 

片段,使实际调用。

using (var client = this.GetHttpClient()) 
{ 
    client.SetBearerToken(this._token.AccessToken); 
    var uri = new Uri(client.BaseAddress, string.Format("api/crmcustomer/?FirstName={0}&Surname={1}&DateOfBirth={2}&PostCode={3}&GetLatestWhenThereAreMultipleResults={4}", 
     parameter.FirstName, 
     parameter.Surname, 
     parameter.DateOfBirth.HasValue ? parameter.DateOfBirth.Value.ToString("yyyy-MM-dd") : string.Empty, 
     parameter.PostCode, 
     parameter.GetLatestWhenThereAreMultipleResults)); 

    this.Log.Info("URI: " + uri); 

    this.Log.Debug("parameter.FirstName: " + parameter.FirstName); 
    this.Log.Debug("parameter.Surname: " + parameter.Surname); 
    if (parameter.DateOfBirth != null) 
     this.Log.Debug("parameter.DateOfBirth: " + parameter.DateOfBirth.Value.ToString("yyyy-MM-dd")); 
    this.Log.Debug("parameter.PostCode: " + parameter.PostCode); 
    this.Log.Debug("parameter.GetLatestWhenThereAreMultipleResults: " + parameter.GetLatestWhenThereAreMultipleResults); 
    var response = await client.GetAsync(uri).ConfigureAwait(false); 
    response.EnsureSuccessStatusCode(); 
    return await response.Content.ReadAsAsync<CtiResponse>(); 
} 

这可能是什么原因造成的?

+0

“所以这个异常没有什么意义” - 如果继承了周围的其他方法,除了将没有任何意义。苹果(WindowsIdentity)是一种水果(ClaimsIdentity)。这并不意味着你可以随便拿一块水果并魔法般地将它变成苹果。 –

+0

@Damien_The_Unbeliever我刚刚遇到了一个我怀疑自己的时刻,我是愚蠢的还是盲目的。谢谢。 –

回答

相关问题