2014-10-16 7 views
9

के विंडोज अपडेट के बाद तोड़ते हैं आज सुबह मैं यह पता चला कि मेरे सर्वर पर मेरा एमवीसी 4 वेब एप्लिकेशन टूट गया था।एमवीसी अनुप्रयोग 15 अक्टूबर

त्रुटि संदेश है:

An exception of type 'System.IO.FileNotFoundException' occurred in 
mscorlib.dll but was not handled in user code. 
Additional information: Could not load file or assembly 
'Newtonsoft.Json, Version=4.5.0.0, Culture=neutral, 
PublicKeyToken=30ad4fe6b2a6aeed' or one of its dependencies. 
The system cannot find the file specified. 

मैं अपने वी.एस. परियोजना खोला और कोड (ताकि किसी अन्य कंप्यूटर पर) से भाग गया, एक ही त्रुटि हुई!

मैंने अपने सर्वर लॉग की जांच की और खोजे गए अपडेट स्वचालित रूप से 5:06 पूर्वाह्न पर स्थापित किए गए। अद्यतनों में से एक एक इंस्टॉलर पैकेज AspNetMVC4.msi द्वारा किया गया था। एक मिनट बाद, मेरे वेब एप्लिकेशन पर पहली त्रुटियों में स्ट्रीमिंग शुरू हुई।

मेरे विकास लैपटॉप पर, उसी इंस्टॉलर ने कल (15 अक्टूबर) 1:10:10 बजे चलाया था।

दोनों कंप्यूटरों पर एक ही समस्या।

मैंने कभी न्यूटनसॉफ्ट.जेसन के बारे में नहीं सुना था (लेकिन अब मुझे पता चला है कि यह क्या है)। ऐसा लगता है कि एमवीसी डीएलएस (असंभव) में से एक या पैकेज डीएल में से एक (अधिक संभावना) न्यूटनसॉफ्ट का संदर्भ है।

मैंने न्यूटॉन्सॉफ्ट को न्यूजेट से इंटेल करने की कोशिश की है। यह कुछ प्रभाव था, त्रुटि एक FileLoadException को FileNotFound से बदल दिया है:

An exception of type 'System.IO.FileLoadException' occurred in 
mscorlib.dll but was not handled in user code Additional 
information: Could not load file or assembly 'Newtonsoft.Json, 
Version=4.5.0.0, Culture=neutral, PublicKeyToken=30ad4fe6b2a6aeed' 
or one of its dependencies. The located assembly's manifest 
definition does not match the assembly reference. (Exception 
from HRESULT: 0x80131040) 

मैं भी 4.5.1 करने के लिए .NET 4.5 से अपग्रेड करने की कोशिश की। इससे मदद नहीं मिली।

Btw, त्रुटि Global.asax.cs में RegisterRoutes में होता है:

routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

कोई भी विचार?

+1

आपने कौन सा संस्करण nuGet के साथ स्थापित किया था, तो आप नए संस्करण पर रीडायरेक्ट करने के लिए बाध्यकारी रीडायरेक्ट का प्रयास कर सकते हैं http://msdn.microsoft.com/en-us/library/eftw1fys(v=vs.110).aspx – 3dd

+0

Newtonsoft.Json के संस्करण ने आप स्थापित किया था? –

+0

क्या असेंबली बाध्यकारी रीडायरेक्ट भी इसे हल कर सकता है? –

उत्तर

0

आपको Newtonsoft.Json 5.0.1 nupkg इंस्टॉल करने की आवश्यकता है। बीटीडब्लू, क्या आप अपनी परियोजना में System.Web.Http.dll का फ़ाइल संस्करण उपयोग करते हैं?

+0

इस समस्या के बारे में मेरी टिप्पणी हटा दी गई क्यों नहीं।यह आपके लिए महत्वपूर्ण है और यह समझने के लिए कि यह क्यों हुआ। हमें संदेह है कि आपका एप्लिकेशन एमवीसी 4 (शायद 4.0.20505.0) के पूर्व-रिलीज़ संस्करण पर चल रहा है जो जोखिम भरा है, अगर ऐसा है तो आपको एमवीसी 4 के समर्थित रिलीज़ संस्करण में अपग्रेड करना चाहिए। –

+0

एमवीसी सुरक्षा को ठीक करने के बारे में विवरण के लिए पैच मुद्दे इस पोस्ट को देखते हैं: http://blogs.msdn.com/b/webdev/archive/2014/10/16/microsoft-asp-net-mvc-security-update-broke-my-build.aspx –

1

आपके सभी अच्छे विचारों के लिए धन्यवाद! मैंने असेंबली रीडायरेक्ट करने की कोशिश की थी, लेकिन यह काम नहीं किया।

मैंने अंततः समस्या को एक बहुत ही सरल तरीके से तय किया। मैं अचानक एहसास हुआ कि मैं नीचे मार्ग इस्तेमाल कभी नहीं किया:

routes.MapHttpRoute( 
    name: "DefaultApi", 
    routeTemplate: "api/{controller}/{id}", 
    defaults: new { id = RouteParameter.Optional } 
); 

तो मैं इन पंक्तियों और Presto नष्ट कर दिया, सब फिर से काम किया!

कुछ शोध ने मुझे दिखाया कि MapHttpRoute System.Web.Mvc.dll के पुराने संस्करण का हिस्सा है, लेकिन नए संस्करण की नहीं है। तो नया संस्करण पुराने संस्करण के साथ असंगत है।

यह अभी भी मुझे परेशान करता है कि एक चल रहा, उत्पादन वेब एप्लिकेशन तोड़ता है जबकि मैं विंडोज अपडेट द्वारा सो रहा हूं। विंडोज अपडेट बंद करना एक समाधान हो सकता है, लेकिन सर्वर को अधिक कमजोर बनाता है ... यहां ज्ञान क्या है।

फिर से सभी को धन्यवाद।

+0

MapHttpRoute एक्सटेंशन वास्तव में वेबएपीआई का हिस्सा है, एमवीसी नहीं। यदि आपके पास अपडेट की गई वेबएपीआई असेंबली नहीं है लेकिन यह कोड था, तो यह आपको इस समस्या का कारण बन जाएगा –

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