2015-06-24 85 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我剛剛遇到了一個我懷疑自己的時刻,我是愚蠢的還是盲目的。謝謝。 –

回答

相關問題