سؤال

وأنا أحاول أن تيار فيديو كويك تايم لاي فون من تطبيق ويب ASP.NET باستخدام HttpHandler. عند استضافة تطبيق ويب من IIS 5.1 (ويندوز XP)، لاعب الفيديو يفتح ثم يعرض خطأ "لم يتم تكوين الملقم بشكل صحيح. ومع ذلك، عند استخدام IIS 7.5 (ويندوز 7)، وتشغيل الفيديو على ما يرام.

وبيئة الإنتاج يتم تشغيل IIS 6.0 و لديها نفس المشكلة، حيث تحاول تشغيل ملفات الفيديو على اي فون عبر موبايل سفاري يعرض الخطأ أعلاه.

ولقد دققت الرؤوس المتشعب ويبدو أنها من الناحية العملية نفسها بين ملقمين (بغض النظر عن عدد قليل، مثل أجهزة الخادم رأس، والتي سوف يكون من الواضح مختلفة)، إلا أنها تظهر في ترتيب مختلف، على الرغم من أنني أشك في أن هذا هو الذي يسبب المشكلة.

ووفقا ل هذا الموضوع على جوجل مجموعات، إضافة إلى 'قبول-نطاقات: بايت "رأس يمكن أن تساعد، على الرغم من هذا لا فرق بالنسبة لنا. لقد أضاف أيضا رأس إيتاغ، دون أي حظ.

والرمز مسؤولة فعلا لإرسال الملف يبدو شيئا من هذا القبيل:

Context.Response.Buffer = true;
Context.Response.ContentType = "video/x-m4v";

Context.Response.AppendHeader("Content-Disposition", "filename=\"Video.m4v\"");
Context.Response.AppendHeader("Content-Length", "23456789");

Context.Response.AppendHeader("Accept-Ranges", "bytes");
Context.Response.AppendHeader("ETag", GetETag(path));

Context.Response.TransmitFile(path);

ورمز أعلاه الذي ينقل الملفات يبدو أنها تعمل بشكل صحيح وملفات الفيديو اللعب مرة أخرى بشكل صحيح في جميع متصفحات سطح المكتب وعند استضافة من IIS 7.5 على ويندوز 7. المشكلة هو الظاهر فقط عند محاولة تشغيل ملفات الفيديو على اي فون باستخدام المحمول رحلات السفاري باستخدام رمز أعلاه مع تطبيق ويب ASP.NET يتم استضافتها على IIS 5.1 أو IIS 6.0.

وأي شخص آخر من ذوي الخبرة أي شيء من هذا القبيل، وحصلت على أي أفكار حول ما يمكنني القيام به للحصول على هذا العمل؟

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

المحلول

لماذا قمت بتعيين Response.Buffer إلى true؟

وأنت لا يمكن ببساطة إضافة رأس "نطاقات تحمل" إلا إذا كنت أيضا التأكد من أن خادم يدعم طلبات المدى HTTP. إذا كان لاعب العميل يتطلب دعما لطلبات نطاق وترفض خادم التعامل معها، يبدو من المنطقي أن الطلب سيتم رفضه.

هل يمكن أن حاول استخدام عازف الكمان كما عكس وكيل ومعرفة ما اذا كان اي فون يجعل طلب المدى. http://www.fiddler2.com/Fiddler/Help/ReverseProxy.asp

نصائح أخرى

وبعد بعض البحث، جئت عبر مقالة يطلب المدى المحدد في ASP.NET الذي يصف المشكلة بالضبط كنت أعاني. تنفيذ <م> RangeRequestHandlerBase الدرجة من هذا الموقع (مع بعض التعديلات الطفيفة لتناسب داخل بنيتنا مشروع قائم) ويبدو أن تحل المشكلة، وتعمل تشغيل الفيديو بشكل صحيح الآن من IIS5 / 6.

وEric - لقد upvoted إجابتك كما كان تعليقك على دفعة في الاتجاه الصحيح. ببساطة مضيفا أن رأس 'قبول-نطاقات "لا يكفي (على الرغم من العمل في IIS7)، ويحتاج معالج HTTP إلى تعديل للتعامل مع طلبات نطاق وضمان أن يتم إرسال البيانات الصحيحة.

استخدم شيئا مثل عازف الكمان لفضح استجابة HTTP الدقيقة القادمة من الملقمات. حلوى سلسلة عامل المستخدم العميل لتتناسب مع متصفح فون (أو مجرد استخدام سفاري؟) ومقارنة الإخراج من IIS 5.1 و 7.5. من الواضح أن تيارات استجابة ليست متطابقة أو قد يكون العمل على حد سواء.

ويمكنك أيضا استخدام NETMON، الذي هو أداة عظيمة ... وسوف تسمح لك لاختبار مع اي فون نفسها.

واسف ليس لدي إجابة محددة بالنسبة لك، ولكن أعتقد أنك ستكون لدينا للحصول على يديك القذرة مع هذا واحد.

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