.NET कोर MVC पृष्ठ परिवर्तन के बाद ताज़ा नहीं है


113

मैं नवीनतम संस्करण 2.2 पर .NET कोर MVC का निर्माण कर रहा हूं। मुझे एक समस्या है जब मैं CSHTML फ़ाइल में परिवर्तन करता हूं और पृष्ठ को ताज़ा करता हूं, तो मेरे परिवर्तन ब्राउज़र में परिलक्षित नहीं होते हैं। मुझे अपने परिवर्तनों को देखने के लिए परियोजना को पुनः आरंभ करना होगा। यह कुछ समय के लिए हो रहा है इसलिए मुझे बिल्कुल यकीन नहीं है कि इस मुद्दे के कारण क्या परिवर्तन हुआ है।

मैंने क्रोम के "खाली कैश और हार्ड रीलोड" के साथ-साथ अन्य ब्राउज़रों का कोई फायदा नहीं उठाने की कोशिश की है। यह मैक और वीएस कोड के लिए विजुअल स्टूडियो का उपयोग करके विंडोज और मैक पर होता है

एक डिफ़ॉल्ट। नेट कोर परियोजना में यह ठीक काम करता है इसलिए यह मेरे प्रोजेक्ट में कुछ होना चाहिए जो रास्ते में बदल गया। मैं सोच रहा हूँ कि इस समस्या को दूर करने के लिए मुझे कहाँ से शुरुआत करनी होगी? मैंने अपने Startup.csऔर Program.csबिना किसी संकल्प के लगभग सब कुछ टिप्पणी करने की कोशिश की है ।


मैं उसी मिसिंगमैथोडीसेप्शन का सामना कर रहा हूं जिसका आपने नीचे उल्लेख किया है ... क्या आपने कभी इसका पता लगाया है? यदि, तो क्या आप अपने प्रश्न का उत्तर दे सकते हैं?
जॉनऑसबोर्न

जवाबों:


59

ASP.NET Core 2.2 में एक बदलाव किया गया था, ऐसा लगता है (और मैं इस बदलाव के बारे में कोई घोषणा नहीं कर सकता)। यदि आप स्पष्ट रूप से 'विकास' के वातावरण में नहीं चल रहे हैं, तो रेजर व्यू संकलित हैं और आप .cshtml में किए गए कोई भी नहीं देखेंगे।

हालाँकि आप अपने स्टार्टअप क्लास के कुछ कॉन्फिगरेशन का उपयोग करके इसे बंद कर सकते हैं।

services.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = true);

ASP.NET Core 3.0 और उच्चतर के लिए, अलेक्जेंडर क्रिस्टोव का उत्तर देखें


2
धन्यवाद। हालाँकि, ऐसा प्रतीत होता है कि जब मैं इसे सक्षम करता हूं, html में बदलाव करता हूं, और फिर ताज़ा करता हूं, तो मुझे निम्न अपवाद मिलते हैं: MissingMethodException: Method not found: 'Microsoft.Cci.IMethodReference Microsoft.Cci.ICustomAttribute.Constructor(Microsoft.CodeAnalysis.Emit.EmitContext)'. Microsoft.CodeAnalysis.CSharp.Symbol.Microsoft.CodeAnalysis.ISymbol.GetAttributes() इस अपवाद का कोई मतलब क्या है? अन्य सभी पृष्ठ ठीक लोड होते हैं। केवल जब मैं किसी फ़ाइल को संपादित करता हूं और रिफ्रेश करता हूं तो मुझे यह त्रुटि
मिलती है

3
इसने मेरे लिए काम किया। पर्यावरण के आधार पर इसे सेट करने के लिए, स्टार्टअप विधि में IHostingEnvironment जोड़ें और एक संपत्ति में बने रहें। फिर कुछ इस तरह का उपयोग करेंservices.AddMvc().AddRazorOptions(options => options.AllowRecompilingViewsOnFileChange = _env.IsEnvironment("MyEnvironment"));
KuriosCurious

1
धन्यवाद यह काम किया। हालाँकि मुझे लगता है कि यह बहुत अजीब और मूर्खतापूर्ण है कि Microsoft आधिकारिक तौर पर इस तरह के बड़े बदलावों की घोषणा नहीं करता है।
Code_Worm

@kevskree मेरे साथ ऐसा ही हो रहा है
JohnOsborne

1
@ मयंक गुप्ता: नीचे सिकंदर क्रिस्टोव का जवाब देखें ( stackoverflow.com/a/57637903/198990 )। उनके जवाब ने मेरे (3.1) काम किया।
सैंडर ड्रीहुहुज़न

207

में ASP.NET कोर 3.0 और उच्चतर ,RazorViewEngineOptions.AllowRecompilingViewsOnFileChange उपलब्ध नहीं है।

आश्चर्य है कि जब एप्लिकेशन चल रहा है तो एक दृश्य को ताज़ा करने से काम नहीं हुआ मैंने निम्नलिखित समाधान खोजा:

  1. Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation जोड़ेंप्रोजेक्ट में NuGet पैकेज
  2. निम्नलिखित को इसमें जोड़ें Startup.cs :

    services.AddControllersWithViews ()। AddRazorRuntimeCompilation () ;

यहां जानिए जिज्ञासु के लिए पूरी जानकारी ...

HTH


1
यह मेरे लिए जो भी कारण के लिए काम नहीं किया। मैं पर हूँ MAC अगर यह एक फर्क पड़ता है।
नकुल तिरुविलुमाला

@Nakul .net कोर वर्जन जो आप उपयोग करते हैं?
अलेक्जेंडर क्रिस्टोव

जब मैंने इस कमांड का उपयोग किया: ls /usr/local/share/dotnet/sared/Microsoft.NETCore.App/ मुझे प्रतीत होता है कि दो उत्तर मिले: 2.1.13 और 3.0.0
नकुल Tiruviluamala

7
यह मैक और ASP.NET Core 3.1 पर मेरे लिए बहुत अच्छा काम किया।
user3071284

4
इस संकेत के लिए Thx; मेरे लिए .Net कोर 3.1.2
जवा

50

मैंने हाल ही में ASP.NET MVC Core 3.1 टेम्प्लेट का उपयोग करके एक नई परियोजना बनाई है और मैंने डिबग के लिए रनटाइम पुन: प्राप्ति के लिए निम्नलिखित को बदल दिया है:

संदर्भ नुगेट पैकेज - Microsoft.AspNetCore.Mvc.Razor.RuntimeCompilation

Startup.cs - ConfigureServices (IServiceCollection services) WAS:

// stuff...

services.AddControllersWithViews();

// more stuff...

अभी:

// stuff...

var mvcBuilder = services.AddControllersWithViews();

#if DEBUG
    mvcBuilder.AddRazorRuntimeCompilation();
#endif

// more stuff...

1
एलेक्स द्वारा पोस्ट किए गए लेख को पढ़ने के बिना यह सबसे अच्छा जवाब है, जो पढ़ने लायक है।
वारगी

9

आपको बस इसे जोड़ना चाहिए:

services.AddControllersWithViews();

करने के लिए ConfigureService विधि।

नीचे दिया गया कोड ASP.NET Core 3.1 में उपलब्ध नहीं है:

services.AddControllersWithViews().AddRazorRuntimeCompilation();

6
इसे काम करने के लिए आपको nuget पैकेज स्थापित करने की आवश्यकता है। Microsoft.spNetCore.Mvc.Razor.Runtime
मयंक गुप्ता

4

नीचे मुझे मदद की जब विचार अलग परियोजना में थे।

if(HostingEnvironment.IsDevelopment()){ // only in development (optional)
    services.AddMvc().AddRazorOptions(o => {
        o.FileProviders.Add(new PhysicalFileProvider(PATH_TO_PROJECT));
    });
}

यह एकमात्र उत्तर है जिसने रेजर क्लास लाइब्रेरी के साथ काम करते समय मेरे लिए काम किया। चीयर्स!
सिपके शूरस्त्र

3

dotnet watch runप्रत्येक बदलाव के बाद परियोजना को फिर से चालू करने के लिए .net कोर 2.2 रनिंग ऐप का उपयोग करना


1

मैं ASPNETCORE_ENVIRONMENT=Developmentपर्यावरण चर को जोड़कर राइडर में इस समस्या को हल करने में सक्षम था ।


0

क्या आप वाकई 2.2 का उपयोग कर रहे हैं? अपने csproj की जाँच करें, क्योंकि यह इस बग हो सकता है https://github.com/aspnet/Razor/issues/2466 तुम कोशिश बंद करने से हो सकता है RazorCompileOnBuildऔर अधिक जानकारी https://docs.microsoft.com/en-us/aspnet/core/razor -pages / SDK? दृश्य = aspnetcore-2.1 # गुण


0

इस समस्या को हल करने के दो तरीके हैं:

1 । फ़ोल्डर की उन अनुमतियों की जाँच करें जिनमें आपकी .sln फ़ाइल मौजूद है। फ़ाइल एक्सेस अनुमतियों के साथ कोई समस्या हो सकती है क्योंकि विज़ुअल स्टूडियो जब IIS एक्सप्रेस सर्वर चला रहा होता है तो फ़ाइलों तक पहुँच नहीं हो सकता है, इसलिए नए .cshtml को बदलने के लिए हर बार आपकी ज़रूरत होती है। सर्वर को पुनरारंभ करें, इसलिए मैं सुझाव देता हूं कि फ़ोल्डर पहुंच अनुमतियों को संपादित करें:

फोल्डर पर राइट क्लिक करें-> प्रॉपर्टीज-> सिक्योरिटी-> एडिट बटन पर क्लिक करें -> सभी ऑप्शन्स चेक करें-> सेव करें

परिवर्तनों को देखने के लिए विज़ुअल स्टूडियो को पुनरारंभ करें।

अगर यह काम नहीं करता है तो 2 विकल्प का उपयोग करें।

2 में अपनी परियोजना .इसके startup.cs फ़ाइल इस नीचे पंक्ति को कॉन्फ़िगर करें कॉन्फ़िगर करें () विधि में:

services।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.