이 문제는 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);
}
무엇 이것의 원인인가?
기본 시작 프로젝트에서이 프로젝트를 사용하고 있습니다. 세션 상태를 사용할 수 있는지 확인하려면 어떻게해야합니까? – user1206480
AcquireRequestState는 세션 상태를 사용할 수있는 가장 빠른 지점입니다. 이 수업을 사용하는 곳에서 코드를 보여 주시겠습니까? – JuhaKangas
게시물을 업데이트했습니다. 웹 API 메서드 내에서 호출을하고 있습니다. – user1206480