2013-10-30 9 views
17

प्राप्त करते समय ट्वीट्सशिप समस्या हम अपने वेब एप्लिकेशन में उपयोगकर्ताओं के ट्वीट दिखाने के लिए TweetSharp (TweetSharp संस्करण = 2.3.1 और न्यूटॉन्सॉफ्ट.जेसन संस्करण = 5.0.6) API का उपयोग कर रहे हैं। नीचे दिए गए कोड है कि हम अपने asp.net MVC के में उपयोग कर रहे हैं (सी #) आवेदन:UserProfile और TimeLine

var service = new TwitterService("ConsumerKey", "ConsumerKeySecret"); 
service.AuthenticateWith("TwitterToken", "TwitterTokenSecret"); 
TweetSharp.TwitterUser tuSelf = service.GetUserProfile(new GetUserProfileOptions() { IncludeEntities = false, SkipStatus = false }); 
if (tuSelf != null) 
{ 
//Get the User Details 
} 
var tweets = service.ListTweetsOnUserTimeline(new ListTweetsOnUserTimelineOptions { Count = 5 }); 

हम निम्नलिखित अपवाद हो रही है, जबकि UserProfile हो रही है: हो रही

System.OverflowException: Value was either too large or too small for an Int32. 

Generated: Wed, 30 Oct 2013 05:48:41 GMT 

System.OverflowException: Value was either too large or too small for an Int32. 
    at System.Number.ParseInt32(String s, NumberStyles style, NumberFormatInfo info) 
    at Newtonsoft.Json.JsonTextReader.ParseNumber() 
    at Newtonsoft.Json.JsonTextReader.ParseValue() 
    at Newtonsoft.Json.JsonTextReader.ReadInternal() 
    at Newtonsoft.Json.JsonReader.ReadAsInt32Internal() 
    at Newtonsoft.Json.JsonTextReader.ReadAsInt32() 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.ReadForType(JsonReader reader, JsonContract contract, Boolean hasConverter) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.SetPropertyValue(JsonProperty property, JsonConverter propertyConverter, JsonContainerContract containerContract, JsonProperty containerProperty, JsonReader reader, Object target) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.PopulateObject(Object newObject, JsonReader reader, JsonObjectContract contract, JsonProperty member, String id) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateObject(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) 
    at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) 
    at TweetSharp.SerializerBase.DeserializeJson(String content, Type type) 
    at TweetSharp.JsonSerializer.DeserializeJson(String content, Type type) 
    at TweetSharp.JsonSerializer.DeserializeSingle(String content, Type type) 
    at TweetSharp.JsonSerializer.DeserializeContent(String content, Type type) 
    at TweetSharp.JsonSerializer.Deserialize[T](RestResponseBase response) 
    at Hammock.RestClient.DeserializeEntityBody[T](RestRequest request, RestResponse`1 response) 
    at Hammock.RestClient.BuildResponseFromResult[T](RestRequest request, WebQuery query) 
    at Hammock.RestClient.Request[T](RestRequest request) 
    at TweetSharp.TwitterService.WithHammockImpl[T](RestRequest request) 
    at TweetSharp.TwitterService.WithHammock[T](String path) 
    at TweetSharp.TwitterService.WithHammock[T](String path, Object[] segments) 
    at TweetSharp.TwitterService.GetUserProfile(GetUserProfileOptions options) 
    at TweetApp.Web.Controllers.TwitterController.GetFollowersAndTweets(TwitterSettings twitterSettings) 
    at TweetApp.Web.Controllers.TwitterController.ViewTwitter(Nullable`1 Id) 
    at lambda_method(Closure , ControllerBase , Object[]) 
    at System.Web.Mvc.ActionMethodDispatcher.Execute(ControllerBase controller, Object[] parameters) 
    at System.Web.Mvc.ReflectedActionDescriptor.Execute(ControllerContext controllerContext, IDictionary`2 parameters) 
    at System.Web.Mvc.ControllerActionInvoker.InvokeActionMethod(ControllerContext controllerContext, ActionDescriptor actionDescriptor, IDictionary`2 parameters) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass42.<BeginInvokeSynchronousActionMethod>b__41() 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass8`1.<BeginSynchronous>b__7(IAsyncResult _) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethod(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<>c__DisplayClass39.<BeginInvokeActionMethodWithFilters>b__33() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass4f.<InvokeActionMethodFilterAsynchronously>b__49() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass37.<BeginInvokeActionMethodWithFilters>b__36(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeActionMethodWithFilters(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<>c__DisplayClass2a.<BeginInvokeAction>b__20() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.<>c__DisplayClass25.<BeginInvokeAction>b__22(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction(IAsyncResult asyncResult) 
    at System.Web.Mvc.Controller.<>c__DisplayClass1d.<BeginExecuteCore>b__18(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.Controller.EndExecuteCore(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.Controller.EndExecute(IAsyncResult asyncResult) 
    at System.Web.Mvc.Controller.System.Web.Mvc.Async.IAsyncController.EndExecute(IAsyncResult asyncResult) 
    at System.Web.Mvc.MvcHandler.<>c__DisplayClass8.<BeginProcessRequest>b__3(IAsyncResult asyncResult) 
    at System.Web.Mvc.Async.AsyncResultWrapper.<>c__DisplayClass4.<MakeVoidDelegate>b__3(IAsyncResult ar) 
    at System.Web.Mvc.Async.AsyncResultWrapper.WrappedAsyncResult`1.End() 
    at System.Web.Mvc.MvcHandler.EndProcessRequest(IAsyncResult asyncResult) 
    at System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest(IAsyncResult result) 
    at System.Web.HttpApplication.CallHandlerExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
    at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

और नीचे अपवाद टाइमलाइन ट्वीट्स:

Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'TweetSharp.TwitterStatus' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array. Path '', line 1, position 1. 

Generated: Wed, 30 Oct 2013 04:45:03 GMT 

Newtonsoft.Json.JsonSerializationException: Cannot deserialize the current JSON array (e.g. [1,2,3]) into type 'TweetSharp.TwitterStatus' because the type requires a JSON object (e.g. {"name":"value"}) to deserialize correctly. 
To fix this error either change the JSON to a JSON object (e.g. {"name":"value"}) or change the deserialized type to an array or a type that implements a collection interface (e.g. ICollection, IList) like List<T> that can be deserialized from a JSON array. JsonArrayAttribute can also be added to the type to force it to deserialize from a JSON array. 
Path '', line 1, position 1. 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.EnsureArrayContract(JsonReader reader, Type objectType, JsonContract contract) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateList(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, Object existingValue, String id) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.CreateValueInternal(JsonReader reader, Type objectType, JsonContract contract, JsonProperty member, JsonContainerContract containerContract, JsonProperty containerMember, Object existingValue) 
    at Newtonsoft.Json.Serialization.JsonSerializerInternalReader.Deserialize(JsonReader reader, Type objectType, Boolean checkAdditionalContent) 
    at Newtonsoft.Json.JsonSerializer.DeserializeInternal(JsonReader reader, Type objectType) 
    at TweetSharp.SerializerBase.DeserializeJson(String content, Type type) 
    at TweetSharp.JsonSerializer.DeserializeJson(String content, Type type) 
    at TweetSharp.JsonSerializer.AddDeserializedItem(String c, Type type, IList collection) 
    at TweetSharp.JsonSerializer.DeserializeCollection(String content, Type type) 
    at TweetSharp.JsonSerializer.DeserializeContent(String content, Type type) 
    at TweetSharp.JsonSerializer.Deserialize[T](RestResponseBase response) 
    at Hammock.RestClient.DeserializeEntityBody[T](RestRequest request, RestResponse`1 response) 
    at Hammock.RestClient.BuildResponseFromResult[T](RestRequest request, WebQuery query) 
    at Hammock.RestClient.Request[T](RestRequest request) 
    at TweetSharp.TwitterService.WithHammockImpl[T](RestRequest request) 
    at TweetSharp.TwitterService.WithHammock[T](String path) 
    at TweetSharp.TwitterService.WithHammock[T](String path, Object[] segments) 
    at TweetSharp.TwitterService.ListTweetsOnUserTimeline(ListTweetsOnUserTimelineOptions options) 

यह सभी ट्विटर उपयोगकर्ताओं के लिए नहीं हो रहा है। यह केवल उन कुछ उपयोगकर्ताओं के लिए होता है जिनके पास अधिक ट्वीट हैं। कृपया सुझाव दें कि इसे कैसे संभालें?

उत्तर

17

मुझे यकीन है कि यह नए उपयोगकर्ता आईडी लंबाई के साथ करना है ट्विटर ट्विटर नए खातों के लिए उपयोग कर रहा है।

जब भी कोई नया ट्विटर खाता काम करता है तो मुझे भी वही त्रुटि होती है। यह तब भी होता है जब पुराने खातों को देखते हैं यदि उनके पास नए खातों से ट्वीट्स या उल्लेख हैं।

ट्वीट्सपैप कुछ स्थानों पर user_id के लिए पूर्णांक का उपयोग कर रहा है जो अपवाद फेंक रहा है।

github पर जाएं और नवीनतम स्रोत डाउनलोड करें। इसे नए उपयोगकर्ता आईडी को संभालने के लिए अद्यतन किया गया है। (आप इसे खुद को संकलित करने की आवश्यकता होगी)

रोब

+11

क्लोन TweetSharp। TweetSharp.Core प्रोजेक्ट खोलें। यदि आपके पास यह नहीं है तो इंस्टॉल-पैकेज हैमॉक। यदि आपके पास यह नहीं है तो इंस्टॉल-पैकेज Newtonsoft.Json इंस्टॉल करें। केवल TweetSharp proj बनाएँ। बिन \ Debug \ TweetSharp.dll को आप जो भी प्रोजेक्ट TweetSharp का उपयोग कर रहे हैं उसे कॉपी करें (रेफरी हटाएं, पुरानी हटाएं, नई प्रतिलिपि बनाएं, सुरक्षित होने के लिए रेफरी जोड़ें)। मेरे पास एक नए परीक्षण ट्विटर खाते के साथ एक ही समस्या थी, इसने इसे ठीक किया, लेकिन मेरे पुराने व्यक्तिगत खाते से नहीं। सिर के लिए चीयर्स @Rob –

+0

किसी को nuget –

+0

अपडेट करने की आवश्यकता है यदि आपको नवीनतम कोडबेस बनाने में कोई समस्या आ रही है, तो कृपया यहां डीएलएस खोजें .. https://github.com/mdrahman/TweetSharp.DLL –

12

ट्विटर Int64 के लिए Int32 से अपने आईडी बदल गया है और TweetSharp इस संभाल करने के लिए अद्यतन नहीं किया।

ठीक करने के लिए:

  1. packages.config फ़ाइल में TweetSharp के संदर्भ को हटा दें।
  2. ओपन पैकेज प्रबंधक कंसोल
  3. PM> इंस्टॉल करें-पैकेज TweetSharp-अनधिकृत

और उछाल। इससे हो जाना चाहिए।

+1

दोनों के बीच क्या अंतर है? जैसा कि यह अनौपचारिक कहता है। क्या इसका इस्तेमाल सुरक्षित है? –

+0

@RohitArora अनौपचारिक संस्करण मूल का एक कांटा है जिसने 'आईडी' फ़ील्ड को अद्यतन किया है। मैं गारंटी नहीं दे सकता कि यह सुरक्षित है, लेकिन मैं इसका उपयोग कर रहा हूं। – Matt

+1

खुशी है कि मैं इस जवाब को पढ़ता हूं, इसके लिए धन्यवाद – aw04

3

मेरे पास यह समस्या है, मैं बस JSON.Net पैकेज अद्यतन करता हूं और इसकी निश्चित।

समाधान एक्सप पर जाएं -> संदर्भ राइट क्लिक करें -> Nuget पैक प्रबंधित करें -> अपडेट जांचें और Json.net पैक अपडेट करें।

संबंधित मुद्दे