2015-04-08 118 views
0

我有一個SMS類,它使用Newtonsoft.Json方法來解析json。 該類由一個方法(RunSmsService)調用,該方法每30秒執行一次並基於到期的緩存系統。 RunSmsService方法首先由Application_Start(Global.asax.cs)啓動Newtonsoft.Json.JsonReaderException,無法找到程序集'Newtonsoft.Json ...'

幾乎每次調用SMS類時,下面的異常都會拋出,並在應用程序池崩潰後一段時間。

Application: w3wp.exe 
Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 
Exception Info: Newtonsoft.Json.JsonReaderException 
Stack: 
    at System.Runtime.CompilerServices.AsyncMethodBuilderCore.<ThrowAsync>b__5(System.Object) 
    at System.Threading.ExecutionContext.RunInternal(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext, System.Threading.ContextCallback, System.Object, Boolean) 
    at System.Threading.QueueUserWorkItemCallback.System.Threading.IThreadPoolWorkItem.ExecuteWorkItem() 
    at System.Threading.ThreadPoolWorkQueue.Dispatch() 

An unhandled exception occurred and the process was terminated. 

Application ID: DefaultDomain 

Process ID: 9232 

Exception: System.Runtime.Serialization.SerializationException 

Message: Unable to find assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'. 

StackTrace: at System.Runtime.Serialization.Formatters.Binary.BinaryAssemblyInfo.GetAssembly() 
    at System.Runtime.Serialization.Formatters.Binary.ObjectReader.GetType(BinaryAssemblyInfo assemblyInfo, String name) 
    at System.Runtime.Serialization.Formatters.Binary.ObjectMap..ctor(String objectName, String[] memberNames, BinaryTypeEnum[] binaryTypeEnumA, Object[] typeInformationA, Int32[] memberAssemIds, ObjectReader objectReader, Int32 objectId, BinaryAssemblyInfo assemblyInfo, SizedArray assemIdToAssemblyTable) 
    at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.ReadObjectWithMapTyped(BinaryObjectWithMapTyped record) 
    at System.Runtime.Serialization.Formatters.Binary.__BinaryParser.Run() 
    at System.Runtime.Serialization.Formatters.Binary.ObjectReader.Deserialize(HeaderHandler handler, __BinaryParser serParser, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 
    at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize(Stream serializationStream, HeaderHandler handler, Boolean fCheck, Boolean isCrossAppDomain, IMethodCallMessage methodCallMessage) 
    at System.AppDomain.Deserialize(Byte[] blob) 
    at System.AppDomain.UnmarshalObject(Byte[] blob) 

我擡頭一看,搜索相關的帖子 「無法找到程序集「Newtonsoft.Json,...」 錯誤,但沒有幫助!

任何人都知道這個解決方案?

+2

將Newtonsoft.Json.dll與SMS類一起復制到輸出目錄(或部署到服務器)? – Paolo

+0

@Paolo是的,它已被複制到bin文件夾並在web.config和package.config中引用 – Mahyar

+0

檢查版本。當您使用的另一個庫也引用dll和不同版本的副本時,可能會發生這種情況。如果發生這種情況,您需要使用運行時>程序集綁定> dependantAssembly元素將其修復到web.config中。有關示例,請參閱http://stackoverflow.com/questions/17776090/newtonsoft-json-assembly-conflict。 –

回答

0

我發現錯在什麼地方
在我的短信班,我正在閱讀使用HttpClient應該返回一個JSON的網址。 在某些情況下,它返回一個空字符串,因爲我使用JObject.Parse解析字符串,將拋出異常。

當JSON解析(在Newtonsoft.Json)拋出一個異常,幾乎它會導致這個錯誤:Unable to find assembly 'Newtonsoft.Json, Version=6.0.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed'

是我的錯不包圍的代碼段中的try/catch
感謝

+2

你仍然只是避免了這個問題。您需要能夠找到該組件。 – mason

+0

@mason不,組裝是在那裏在\ bin文件夾的網站 我讀了別的地方這個錯誤是json解析異常的常見異常 – Mahyar

+0

試試這個:http://stackoverflow.com/a/14367032/122195 – thepirat000

相關問題