ASP.NET MVC में favicon.ico की सेवा


255

ASP.NET MVC में favicon.ico की सेवा करने के लिए अंतिम / सर्वोत्तम सिफारिश क्या है?

मैं वर्तमान में निम्नलिखित कार्य कर रहा हूं:

  • मेरे RegisterRoutes विधि की शुरुआत में एक प्रविष्टि जोड़ना :

    routes.IgnoreRoute("favicon.ico");
  • मेरे आवेदन की जड़ में favicon.ico रखने (जो कि मेरे डोमेन का मूल भी है)।

मेरे दो सवाल हैं:

  • क्या मेरे आवेदन के मूल के अलावा कहीं भी favicon.ico लगाने का कोई तरीका नहीं है। यह रूप में एक ही स्तर पर किया जा रहा है वहीं को भावुक सुंदर है Contentऔर Controllers
  • क्या यह IgnoreRoute("favicon.ico")कथन पर्याप्त है - या मुझे फिल हाक से एक ब्लॉग पोस्ट में चर्चा के रूप में निम्न करना चाहिए । मुझे कभी भी रूट के अलावा किसी भी निर्देशिका में favicon.ico के लिए एक अनुरोध देखने के बारे में पता नहीं है - जो इसे अनावश्यक बना देगा (लेकिन यह जानना अच्छा है कि यह कैसे करना है)।

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

4
आपकी नियमित अभिव्यक्ति '\' होनी चाहिए। favicon.ico में डॉट के लिए, सिर्फ ''। '
नाथनअल्डनसेर

1
यह वह है जो मैं उपयोग करता हूं (यह खाते में @ NathanAldenSr की सलाह लेता है, आगे और पीछे दोनों स्लैशों का समर्थन करता है, और favicon.png फ़ाइलों के लिए भी अनुमति देता है):routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
BrainSlugs83

@ BrainSlugs83 - आपने समाधान मेरे लिए लापता टुकड़ा जोड़ा जो स्लैश था ... यहां एक .NET vNext संस्करण (बीटा -5) है। routes.MapRoute("IgnoreFavicon", "{*favicon}", new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" });
Rentering.com

सुधार, vNext पर ध्यान न दें मार्ग routes.MapRoute("Ingore", "{*favicon}", new { }, new { favicon = @"(.*[/\\])?favicon\.((ico)|(png))(/.*)?" }); सूचना thew new {},
Rentering.com

जवाबों:


204

अपने डोमेन की जड़ में favicon.ico रखने से वास्तव में IE5, IIRC प्रभावित होता है। अधिक आधुनिक ब्राउज़रों के लिए आपको किसी अन्य निर्देशिका को इंगित करने के लिए लिंक टैग शामिल करने में सक्षम होना चाहिए:

<link rel="SHORTCUT ICON" href="http://www.mydomain.com/content/favicon.ico"/>

आप IE के अलावा अन्य ब्राउज़रों के लिए गैर-आईसीओ फ़ाइलों का भी उपयोग कर सकते हैं, जिसके लिए मैं शायद PNG को FF, इत्यादि, और IE के लिए ICO की सेवा के लिए निम्नलिखित सशर्त विवरण का उपयोग करूंगा:

<link rel="icon" type="image/png" href="http://www.mydomain.com/content/favicon.png" />
<!--[if IE]>
<link rel="shortcut icon" href="http://www.mydomain.com/content/favicon.ico" type="image/vnd.microsoft.icon" />
<![endif]-->

25
आपको लिंक बनाने के लिए @ Url.Content का उपयोग करने की आवश्यकता है ताकि यह सभी वातावरणों में काम करे।
रिकएंडएमएसएफटी

5
सच है, ASP.NET के लिए। मेरा उत्तर "जेनेरिक" संस्करण (सादा HTML) दिखाता है, इसलिए कोई भी अपनी पसंद की रूपरेखा / भाषा के अनुरूप बदलाव कर सकता है :)
क्रिस

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

2
IE11 PNG फ़ेविकॉन को समझें और सशर्त विवरण की आवश्यकता नहीं है। आपको यह अच्छा लेख देखना चाहिए: jonathantneal.com/blog/understand-the-favicon
QMaster

धन्यवाद दोस्त! नीचे का हिस्सा वास्तव में मुझे पीएनजी के साथ काम करने में मदद करता है, इसे बस पृष्ठ, मास्टरपेज या लेआउट के शीर्ष पर होना चाहिए।
Alper

226

मैं क्रिस के जवाब से सहमत हूं, लेकिन यह देखकर एक विशिष्ट ASP.NET MVC प्रश्न है कि रेजर सिंटैक्स का उपयोग करना बेहतर होगा:

<link rel="icon" href="@Url.Content("~/content/favicon.ico")"/>

या पारंपरिक रूप से

<link rel="icon" href="<%= Url.Content("~/content/favicon.ico") %>"/>

बजाय

<link rel="icon" href="http://www.mydomain.com/content/favicon.ico"/>

3
सच। मेरा उत्तर "जेनेरिक" संस्करण (HTML) को दर्शा रहा था, इसलिए कोई भी अपनी पसंद की रूपरेखा / भाषा के अनुरूप बदलाव कर सकता है :)
क्रिस

2
@Diego - हाँ, rel = "SHORTCUT ICON" इंटरनेट एक्सप्लोरर द्वारा उपयोग किया जाने वाला गैर-मानक कार्यान्वयन है। अंतरिक्ष W3C मानकों में एक विभाजक चरित्र है ( डेवलपर . mozilla.org/en-US/docs/Web/HTML/Element/link देखें )। इंटरनेट एक्सप्लोरर के अलावा अन्य ब्राउज़रों में सही सिंटैक्स <लिंक rel = "आइकन" href = "पथ / से / favicon.ico"> - अधिक के लिए jonathantneal.com/blog/understand-the-favicon देखें । स्पष्ट रूप से आप ऊपर दिए गए आइकन के पथ के लिए रेज़र या वेब फॉर्म सिंटैक्स का उपयोग कर सकते हैं।
pwdst

3
MVC 4 के साथ आपको इस मामले में Url.Content की आवश्यकता नहीं होगी क्योंकि यह स्वचालित रूप से नियंत्रित किया जाएगा, आप बस उपयोग कर सकते हैं; <लिंक rel = "आइकन" href = "~ / content / favicon.ico" />
स्टुअर्ट हॉलोज़

20

1) आप अपना फेविकॉन जहाँ चाहें वहाँ रख सकते हैं और इस टैग को अपने पेज हेड में जोड़ सकते हैं

<link rel="shortcut icon" href="images/favicon.ico" type="image/x-icon" />

हालाँकि कुछ ब्राउज़र डिफ़ॉल्ट रूप से /favicon.ico से फ़ेविकॉन प्राप्त करने की कोशिश करेंगे, इसलिए आपको इग्नोरआउट का उपयोग करना चाहिए।

2) यदि कोई ब्राउज़र किसी अन्य निर्देशिका में फ़ेविकॉन के लिए अनुरोध करता है तो उसे 404 त्रुटि मिलेगी जो ठीक है और यदि आपके मास्टर पृष्ठ के उत्तर 1 में लिंक टैग है तो ब्राउज़र को फ़ेविकॉन मिलेगा जो आप चाहते हैं।


2
यदि आप साइट को बुकमार्क करते हैं, तो ब्राउज़र .ico फ़ाइल को देखेंगे और देखेंगे - ताकि यह मदद न करे। लेकिन मुझे आश्चर्य है कि अगर ब्राउज़र को याद है कि। मुझे सिर्फ इतना पता है कि फ़िडलर में कभी-कभी मुझे माउस के पूरे स्लीव को पुनः प्राप्त होते देखा जाता है। शायद यह है कि हालांकि गूगल टूलबार है?
साइमन_वेवर

मुझे लगता है कि आप सही हैं, बुकमार्क के लिए आइकन केवल कभी-कभी काम करते हैं, मैंने कभी नहीं सोचा कि क्यों, शायद यह मामला है
एडुआर्डो कैम्पानोस

7

मुझे लगता है कि favicon.ico रूट फ़ोल्डर में होना चाहिए। यह वहीं का है।

यदि आप अलग-अलग आइकन सर्वर करना चाहते हैं - इसे कंट्रोलर में डालें। तुम यह कर सकते हो। यदि नहीं - बस इसे रूट फ़ोल्डर में छोड़ दें।


1
मैं सहमत हूँ। यह रूट फ़ोल्डर में है और कहीं और नहीं होना चाहिए ... रूट फ़ोल्डर में होने पर फ़ेविकॉन के लिए HTML टैग की कोई आवश्यकता नहीं है। सभी सामान्य ब्राउज़रों के साथ काम करता है ...
विन्ज

सबसे पहले, यह मेरे लिए पूर्ण बैल की तरह लग रहा था, लेकिन इसके आसपास कोई रास्ता नहीं है, हमारे लॉगिंग विभिन्न उपयोगकर्ता एजेंटों से 404 त्रुटियां दिखाते रहते हैं।
मिकिएल कॉर्निल

3

उपरोक्त में से किसी ने भी मेरे लिए काम नहीं किया। मैंने अंततः myicon.ico पर favicon.ico का नाम देकर इस समस्या को हल किया, और इसे सिर में संदर्भित किया<link rel="icon" href="~/myicon.ico" type="image/x-icon" />


2

नियंत्रक बनाने के लिए भी संभव होना चाहिए जो आईसीओ फ़ाइल लौटाता है और उस नियंत्रक को इंगित करने के लिए मार्ग /favicon.ico को पंजीकृत करता है।


2

आपको बस app.UseStaticFiles();अपने स्टार्टअप में जोड़ने की जरूरत है। > ->public void Configure(IApplicationBuilder app, IHostingEnvironment env) । ।

ASP.net कोर स्थिर फ़ाइलों को प्राप्त करने का एक शानदार तरीका प्रदान करता है। वह wwwroot फ़ोल्डर का उपयोग कर रहा है। कृपया ASP.NET कोर में स्टेटिक फाइल पढ़ें

का उपयोग करना <Link />बहुत अच्छा विचार नहीं है। कोई व्यक्ति प्रत्येक HTML या cshtml पर favicon.ico के लिए लिंक टैग क्यों जोड़ेगा?


0

इसके बजाय सिर्फ favicon.ico का उपयोग करें जो fav आइकन फ़ाइल के लिए खोज करता है

> <link rel="ICON" 
> href="@System.IO.Path.Combine(Request.PhysicalApplicationPath,
> "favicon.ico")" />

अनुरोधित पथ का उपयोग करें और fav आइकन फ़ाइल के साथ संयोजन करें ताकि उसे सटीक पता मिल जाए जो उसकी खोज है

इसका उपयोग करके Fav.icon त्रुटि को हल किया जाता है जो हमेशा Application_Error पर उठाया जाता है


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