2014-05-10 3 views
0

이 문제는 LinqToTwitter와 관련이 있습니다. MvcAuthorizer의 새로운 인스턴스를 만들려고하지만 자격 증명 저장소에 키를 할당하려고 할 때 null 예외가 계속 발생합니다. 여기에 특정 오류 : 는 'System.NullReferenceException'형식의 예외가 LinqToTwitter.AspNet.dll에서 발생하지만, 이것은 괴상 점점소비자 키를 할당 할 수 없습니다

사용자 코드

업데이트에서 처리되지 않았습니다. 따라서 StateServer로 변경 한 후 동일한 초기 오류가 발생하면 SessionStateCredentialStore를 InMemoryCredentialStore로 변경하기로 결정한 다음 데이터가 반환되지 않는다는 점을 제외하면 작동하는 것처럼 보입니다. 피들러에서 트위터에 대한 성공적인 요청을 볼 수 있지만 데이터가 실행을 멈춘 것처럼 보일 때 코드로 반환되지 않습니다.

public class Twitter 
{ 

// FIELDS 
    private readonly MvcAuthorizer _auth; 

    // PROPERTIES 
    public TwitterContext Twit 
    { 
     get 
     { 
      return new TwitterContext(_auth); 
     } 
    } 
public Twitter() 
    { 
     // all keys 
     var cKey = ConfigurationManager.AppSettings[ 
      "twitConsumerKey"]; 
     var cSecKey = ConfigurationManager.AppSettings[ 
      "twitConsumerSecret"]; 
     var oToken = AuthTool.getUserTwitterTokens().token; 
     var oTokenSecc = AuthTool.getUserTwitterTokens() 
      .tokenSecret; 

     ICredentialStore cred = new InMemoryCredentialStore(); 
     cred.ConsumerKey = cKey; // <--- Error here when using SessionStateCredentialStore but not when using InMemoryCredentialStore 
     cred.ConsumerSecret = cSecKey; 
     cred.OAuthToken = oToken; 
     cred.OAuthTokenSecret = oTokenSecc; 

     // get auth 
     _auth = new MvcAuthorizer() 
       { 
        CredentialStore = cred 
       }; 
    } 

public string RetrieveTwitterId(string twitName) 
{ 
    // this block executes the query as verified with fiddler using InMemoryCredentialsStore 
    // but doesn't return anything to the user variable. The rest of the code does not execute. 
    var user = Twit.User.SingleOrDefault 
     (x => x.Type == UserType.Show && 
       x.ScreenName == twitName); 

    if(user != null) 
    { 
     return user.UserID.ToString("F0"); 
    } 
    return null; 
} 
} 

내가 웹 API 메소드 내에서 메소드를 호출합니다 : 여기

는 방식으로 컨트롤러에없는 생성자에 싸여 코드입니다

[HttpPost] 
public HttpResponseMessage CreateNewInterview(Model.NewInterview interview) 
    { 
     // find twitter Id 
     var twitterId = new Twitter().RetrieveTwitterId(interview.SubjectTwitterName);// error 


     // assign model 
     var model = new NewInterview 
      (interview.Title, twitterId, DateTime.Now, interview.PublicQuestions, interview.Category); 

     // create the new interview 
     Admin.createInterview(model); 

     // create response 
     return Request.CreateResponse(HttpStatusCode.OK); 
    } 

무엇 이것의 원인인가?

답변

0

어디에서 사용하고 계십니까? 나는 이것이 null 인 세션이라고 추측합니다. 세션 상태를 사용할 수 있는지 확인하십시오.

+0

기본 시작 프로젝트에서이 프로젝트를 사용하고 있습니다. 세션 상태를 사용할 수 있는지 확인하려면 어떻게해야합니까? – user1206480

+0

AcquireRequestState는 세션 상태를 사용할 수있는 가장 빠른 지점입니다. 이 수업을 사용하는 곳에서 코드를 보여 주시겠습니까? – JuhaKangas

+0

게시물을 업데이트했습니다. 웹 API 메서드 내에서 호출을하고 있습니다. – user1206480