لماذا كروم البحث عن فافيكون.ico عندما تخدم ملف من ASP.NET MVC?

StackOverflow https://stackoverflow.com/questions/1003350

  •  05-07-2019
  •  | 
  •  

سؤال

لدي جهاز تحكم في MVC تخدم ما يصل الصور من قاعدة البيانات.

تحرير: هذا لا يزال يحدث إذا كنت تخدم الملف تماما ستاندرد يعني في MVC.

في كل مرة أطلب صورة بلدي, جوجل كروم أيضا البحث عن بلدي فافيكون.ico.

تفادي المناقشات حول أمور أخرى "يجب أن نهتم أيضا عن" دعونا نفترض أنا لا أهتم التخزين المؤقت على الإطلاق في هذا المثال ، يجب العودة دائما استجابة HTTP 200 مع الملف.

في وحدة تحكم أعود التالية:

return File(fileBytes, contentType);

بعد تفتيش العابث 2, الرد التالي يتم إنشاؤها:

HTTP/1.1 200 OK
Cache-Control:العامة
نوع المحتوى:صورة/gif
ETag:oYu19wKo+KEHkyxZQ2WXAA==
الخادم:Microsoft-IIS/7.0
X-AspNetMvc الإصدار:1.0
X-AspNet-الإصدار:2.0.50727
X-Powered-By:ASP.NET
التاريخ:الثلاثاء, 16 يونيو 2009 18:48:45 بتوقيت جرينتش
طول المحتوى:29344

من خلال المقارنة, وهذا هو الرد في العابث من جوجل عندما طلب (لأول مرة) شعار Google:

HTTP/1.1 200 OK
نوع المحتوى:صورة/gif
آخر تعديل:الأربعاء, 07 يونيو 2006 19:42:34 GMT
التاريخ:الثلاثاء, 16 يونيو 2009 18:50:54 GMT
تنتهي:الأربعاء, 16 يونيو 2010 18:50:54 GMT
Cache-Control:العامة, max-age=31536000
الخادم:gws
طول المحتوى:8706
العمر:2

ومع ذلك ، في كروم بعد الحصول على صورة كروم محاولات للعثور على بلدي فافيكون.ico.فإنه لا لا جرب هذا بعد طلب شعار Google.

أي أفكار لماذا هذا قد يكون يحدث ؟ من فهمي HTML, الجواب يجب أن يكون في رأس استجابة لأن من المؤكد أن كل عميل لديه ؟ يرجى تصحيح لي!

تحرير 2: يبدو أن الكثير من الناس قد يساء فهمها تماما المشكلة. المشكلة لا عدم وجود فافيكون و erroring الطلبات في MVC - انها مشكلة طلب فافيكون عندما فقط صورة يتم تحميلها مع نوع المحتوى من "IMAGE/JPEG", بدلا من صفحة ويب مع نوع المحتوى من "TEXT/HTML"!!

هل كانت مفيدة؟

المحلول

هذا لا علاقة له مع MVC.أنا باستخدام webforms مع العرف بنيت خدمة سجل و أنا تعثرت على هذا المنصب أتساءل لماذا كان مستمر 'الملف غير موجود' الأخطاء في السجلات.هذا هو محليا على الجهاز التطوير, لا فافيكون.ico الملفات في المشاريع, و لقد حاولت IE, فايرفوكس وجوجل تحاول أن ترى المتصفح الذي هو الطرف المذنب.

طلب كل من جوجل كروم إلى بلدي تطبيقات يجعل طلب فافيكون.ico.كان علي أن أبدأ تسجيل المتصفح محليا لتحديد أنه كان في الواقع غوغل متصفح أنه هو الجاني.أود الاتصال google إذا كان يزعجك.أردت فقط أن أتأكد أنه لم يكن بعض trojan اصابة في متصفح chrome.

نصائح أخرى

الجواب الفعلي:إنه معروف ، التحقق من الشوائب.*(مؤخرا الثابتة!...ربما؟)

يبدو معروفة منذ أمد بعيد المسألة مع كروم:http://crbug.com/39402

إذا كنت تريد ذلك ثابت عاجلا, نجوم هذه المسألة.أكثر الناس بطولة مسألة من المرجح أن زيادة الأولوية وربما تحصل على انها ثابتة بشكل أسرع.


****تحديث 1***:اعتبارا من 15 مايو من هذا العام (2013)--بعد أربع سنوات من هذا السؤال سئل--يبدو أن المشكلة تم إصلاحها في الإصدار 29:http://crbug.com/39402#c47

لا تتردد في التراجع عن كل ما تبذلونه الخارقة الحلول.:]

****تحديث 2 (2015-01)***:هذا هو على ما يبدو لا تزال مشكلة لبعض المستخدمين ، وفقا نفس المشكلة الرابط.:/

هل لديك فافيكون?إن لم يكن, ربما هذا هو السبب الكروم محاولة للعثور عليه في كل مرة على موقع الويب الخاص بك.جوجل لديها بالفعل فافيكون مؤقتا.

شيء واحد يمكنك فعله هو MVC تجاهل أي طلب *.ico حتى أن كنت لا تحصل على أي استثناءات في حين التصحيح.

ينبغي أن يكون شيئا من هذا القبيل:

routes.MapRoute("ignore-favicon", "{*path}", null, new {path = ".*/favicon\\.ico"});

عنوان URL هذا النمط مباريات كل شيء ولكن يقيد ذلك فقط تتطابق مع أي شيء تنتهي في فافيكون.ico.(لم يتم اختبار هذا)

أنا واجهت هذه المشكلة في حين يعود وحصلت على من حوله من خلال تجاهل مسار محدد عن طريق إضافة

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

في RegisterRoutes طريقة العالمية.asax.

يبدو لي أن كروم طلبات فافيكون الخاص به علامات التبويب - ظللت الحصول على 404s (لأن فافيكون هو سمور آخر صفحاتي تعرف ذلك) حتى فعلت بعض التجارب و أدركت أنه كان الكروم جعل طلبات مباشرة إلى فافيكون الملف.لا إصلاح إلا جعل كتابة إلى ملف حقيقي اعتقد

يمكنك إضافة شيء من هذا القبيل داخل الخاص بك web.config الملف للتأكد من أن favicon.ico مؤقتا على العميل و هو لا يطلب في كل مرة.

<location path="favicon.ico">
    <system.webServer>
        <httpProtocol>
            <customHeaders>
                <add name="Cache-Control" value="public, max-age=31536000" />
             </customHeaders>
        </httpProtocol>
    </system.webServer>
</location>

يمكنك أن تفعل الشيء نفسه على أي صور / .الملفات js و css

يجب عليك تعيين تنتهي رأس تخبر المتصفح متى يجب استخدام نسخة محلية.

إذا كنت تحقق من إعداد المشروع يقول الرمز الافتراضي في مكان ما.إزالة هذا ؟

متصفح كروم يمكن أن تعمل مع جوجل الموقع في طريقة أخرى أكثر من أي موقع آخر, لذلك في البداية أود أن أوصي إلى التحقق إذا كان يبدو على فافيكون.ico كل الوقت في مكان آخر ، على سبيل المثال ، على ستاكوفيرفلوو.

وأود أن تحقق أيضا إذا فايرفوكس يفعل نفس الشيء مع موقع الويب الخاص بك.أعتقد فافيكون.ico ينبغي أن يطلب مرة واحدة فقط في المتصفح تشغيل حتى لو انها ليست موجودة على الموقع.هذا يمكن أن يكون علة في كروم النسخة التي تستخدمها.

هذا لذا السؤال/الجواب يشرح كيفية خدمة فافيكون إلى المتصفح باستخدام طرق.

من المهم أن نضع في أيقونة رابط إلى masterpage أو بعض المتصفحات سوف محاولة للعثور على فافيكون.ico كل الدلائل وليس فقط على الصعيد العالمي مرة واحدة في القيام به.

 <link rel="SHORTCUT ICON" href="<%= Url.Content("~/content/images/rr-favicon.ico") %>"/>

يبدو google toolbar هو الطرف المذنب اذا حكمنا من خلال سجلات بلدي (و IE6 بالطبع).كلاهما سوف تجعل طلبات الدلائل الأخرى من جذورها

 Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
 Mozilla/4.0 (compatible; GoogleToolbar 6.2.1910.1554; Windows 6.0; MSIE 8.0.6001.18828)
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top