لماذا يتجاهل IIS7 رأس نوع المحتوى الخاص بي عندما أستخدم ASP.NET لتدفق الملفات؟

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

سؤال

لدي موقع ويب بسيط مع صفحتين. تعرض المرء قائمة بالملفات، والتدفق الآخر ملف عند النقر عليه في القائمة. كل شيء على ما يرام في الإنتاج لمدة 6 أشهر، ولكن الآن لا بد لي من نقل الموقع إلى Windows 2008 / IIS7. لدي في الغالب يعمل، لكن الملفات لا تفتح بشكل صحيح (في Firefox) لأن رأس نوع المحتوى الخاص بي يتم تجاهله. على موقع الإنتاج (IIS6) الرؤوس (باستخدام FIDLLER):

HTTP/1.1 200 OK
Date: Tue, 09 Feb 2010 16:00:51 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"
Content-Length: 236841
Cache-Control: no-cache, no-store
Pragma: no-cache
Expires: -1
Content-Type: application/octet-stream

ولكن في اختبار خادم IIS7 أحصل عليه:

HTTP/1.1 200 OK
Cache-Control: private
Content-Length: 236841
Content-Type: text/html; charset=utf-8
Server: Microsoft-IIS/7.5
X-AspNet-Version: 2.0.50727
Content-Disposition: attachment; filename="myfile__foo.pdf"

يبلغ Fiddler أيضا عن انتهاك بروتوكول ويقول "عدم تطابق بطول المحتوى: ادعى رأس الاستجابة 236841 بايت، لكن الخادم أرسل 238378 بايت".

يبدو رمزي مثل هذا:

            Response.Clear();
            Response.AddHeader("Content-Disposition", "attachment; filename=\"" + doc.DisplayFilename + "." + doc.FileExtension + "\"");
            Response.AddHeader("Content-Length", file.Length.ToString());
            Response.ContentType = "application/octet-stream";
            Response.TransmitFile(file.FullName);
            Response.End();

لقد كنت أحاول إصلاح هذا لبضعة أيام. أنا لست على دراية IIS7 ونافلت للعثور على مكان تغيير الإعدادات المختلفة. لقد تمكنت من معرفة وسائط الأنابيب المدارة وإصلاح بعض المشكلات الأخرى عن طريق التبديل إلى الكلاسيكية .NET AppPool (تم دمج جميع أنواع الأخطاء عند إرسال الملف).

هل هناك طريقة لمعرفة IIS7 لعدم الكتابة فوق رأس المحتوى الخاص بي، إذا كان هذا ما يحدث؟

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

المحلول

ليس لديك أي httpModules تعديل الطلب / الاستجابة؟ هي ملفات Web.config بالضبط نفس الشيء؟

أين توجد هذه البايت 2K إضافية من؟ ما هو في منهم؟

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top