2016-09-15 6 views
9

इससे पहले, एक Global.aspx.cs, जो नेट कोर में चला गया है करने के लिए कुछ इस तरह जोड़ना होगा: मेंASP.NET कोर 1.0.1 में मार्गों को अनदेखा कैसे करें?

routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" }); 

यहाँ मैं वर्तमान में क्या है मेरी Startup.cs (.NET कोर के लिए):

app.UseDefaultFiles(); 

    app.UseStaticFiles(); 

    app.UseMvc(routes => 
    { 
     routes.MapRoute(
      name: "default", 
      template: "{controller=Home}/{action=Index}/{id?}"); 

     routes.MapSpaFallbackRoute(
      name: "spa-fallback", 
      defaults: new { controller = "Home", action = "Index" }); 
    }); 

समस्या यह है कि एमवीसी (प्री-कोर) routes में RouteCollection था और .NET कोर में यह Microsoft.AspNetCore.Routing.IRouteBuilder है इसलिए IgnoreRoute मान्य विधि नहीं है।

उत्तर

11

आप इसके लिए middleware लिख सकते हैं।

public void Configure(IApplciationBuilder app) { 
    app.UseDefaultFiles(); 

    // Make sure your middleware is before whatever handles 
    // the resource currently, be it MVC, static resources, etc. 
    app.UseMiddleware<IgnoreRouteMiddleware>(); 

    app.UseStaticFiles(); 
    app.UseMvc(); 
} 

public class IgnoreRouteMiddleware { 

    private readonly RequestDelegate next; 

    // You can inject a dependency here that gives you access 
    // to your ignored route configuration. 
    public IgnoreRouteMiddleware(RequestDelegate next) { 
     this.next = next; 
    } 

    public async Task Invoke(HttpContext context) { 
     if (context.Request.Path.HasValue && 
      context.Request.Path.Value.Contains("favicon.ico")) { 

      context.Response.StatusCode = 404; 

      Console.WriteLine("Ignored!"); 

      return; 
     } 

     await next.Invoke(context); 
    } 
} 
+1

धन्यवाद बहुत ज्यादा इस के लिए देखें, लेकिन यह नीचे उबालने के लिए: मैं एक पूरी कस्टम मार्ग के साथ कोड की एक पंक्ति की जगह चाहिए? थोड़े फूले हुए लगता है। –

+1

शायद? .NET कोर में एक तरीका हो सकता है जो आपकी चिंता को सीधे संबोधित करता है। शायद रूटिंग मिडलवेयर के माध्यम से। मैं बस इसमें भाग नहीं लिया है। मैं इस दस्तावेज़ को पढ़ूंगा, फिर कुछ और निश्चित प्राप्त करने के लिए स्रोत कोड देखें: https://docs.asp.net/en/latest/fundamentals/routing.html – Technetium

+0

धन्यवाद, मैं इसे अन्य संभावित उत्तरों के लिए खोल दूंगा अभी व। यदि आपका सबसे अच्छा विकल्प होने पर समाप्त होता है, तो मैं वापस आऊंगा और इसे बाद की तारीख में चिह्नित करूंगा! (चिंता न करें, मैं लगातार SO का उपयोग करता हूं।) –

4

आप मार्ग शर्त के बिना स्थिर फ़ाइल सुलभ बनाना चाहते हैं, बस StaticFiles Middleware में निर्माण का उपयोग करें। इसे कॉन्फ़िगर करें विधि में app.UseStaticFiles(); के साथ सक्रिय करें और अपनी स्थिर फ़ाइलों को wwwroot निर्देशिका में रखें। वे मेजबान पर availible कर रहे हैं/yourStaticFile

अधिक जानकारी के लिए उल्लेख here

+2

स्टैक ओवरफ़्लो में आपका स्वागत है! आप सही रास्ते पर हैं, हालांकि वाक्यांश के रूप में यह उत्तर की तुलना में अधिक टिप्पणी-मांग-स्पष्टीकरण है। आप थोड़ा सा रीफ्रेश कर सकते हैं जैसे "यदि आप स्थिर फाइलों को सुलभ बनाने की कोशिश कर रहे हैं, तो आप इसका उपयोग कर सकते हैं ..." और शायद संदर्भ में एक उदाहरण प्रदान कर सकते हैं। यदि आप 50 या उससे अधिक की प्रतिष्ठा प्राप्त करते हैं, तो आप इसके बजाय टिप्पणियां पोस्ट कर पाएंगे। यहां [http://stackoverflow.com/help/privileges] (विशेषाधिकारों की सूची और उनमें से प्रत्येक को प्राप्त करने के लिए आपको प्रतिष्ठा की आवश्यकता होगी)। सौभाग्य! –

2

अंदर public void Configure

जोड़ने

app.Map("/favicon.ico", delegate { }); 
1

अनुमति दें फ़ेविकॉन अनुरोध मार्ग हैंडलर से पार्स किया जा सकता है, और रखने के कम से कम अपने मार्ग। मिडलवेयर का उपयोग करने से बचें, यह आपके कोड में अतिरिक्त जटिलता जोड़ता है और इसका मतलब है कि अन्य सभी अनुरोध रूट हैंडलर से पहले मिडलवेयर से गुज़रना चाहिए, जो कि व्यस्त वेबसाइटों के प्रदर्शन के मामले में खराब है। उन वेबसाइटों के लिए जो व्यस्त नहीं हैं, आप बस इसके बारे में चिंता करने में अपना समय बर्बाद कर देंगे।

https://github.com/aspnet/Routing/issues/207

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