سؤال

عند تحميل ملف مع HttpClient, أنا تحميل أول الرؤوس ثم المحتوى.عندما تكون رؤوس تحميل, أستطيع أن أرى رؤوس جمع على محتوى الملكية من HttpResponseMessage ، ولكن عند الوصول إلى ذلك من خلال ContentDisposition على رؤوس الحصول على باطل screenshot

لماذا يحدث هذا ؟ عازف الكمان يدل على رؤوس بخير...

كود:

var responseMessage = await httpClient.GetAsync(uri, 
HttpCompletionOption.ResponseHeadersRead).ConfigureAwait(continueOnCapturedContext: false);

تحديث 1

يبدو أن هذه الفئة ما يلي ترتيب المحتوى المبينة في تنفيذ RFC 2616 وفشل في التعامل مع المحتوى الترتيب تنفيذ التحديث RFC 6266.RFC 2616 يعرف filename قيمة المعلمة أن تكون ونقلت-سلسلة, حيث التحديث RFC 6266 فقط الدول ينبغي أن يكون القيمة.

RFC 2616 النحوي

content-disposition = "Content-Disposition" ":"
                          disposition-type *( ";" disposition-parm )
    disposition-type = "attachment" | disp-extension-token
    disposition-parm = filename-parm | disp-extension-parm
    filename-parm = "filename" "=" quoted-string
    disp-extension-token = token
    disp-extension-parm = token "=" ( token | quoted-string )

RFC 6266 النحوي

content-disposition = "Content-Disposition" ":"
                        disposition-type *( ";" disposition-parm )

 disposition-type    = "inline" | "attachment" | disp-ext-type
                     ; case-insensitive
 disp-ext-type       = token

 disposition-parm    = filename-parm | disp-ext-parm

 filename-parm       = "filename" "=" value
                     | "filename*" "=" ext-value

 disp-ext-parm       = token "=" value
                     | ext-token "=" ext-value
 ext-token           = <the characters in token, followed by "*">

حيث ext-value = <ext-value, defined in [RFC5987], Section 3.2>

أمثلة

العامل القضية

Working case

الفشل في حالة

Failing case

تحديث 2

فتحت تذكرة مع MS الاتصال.

تحديث 3

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

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

المحلول

المشكلة مع الزائدة؛في رأس المحتوى التصرف

giveacodicetagpre.

إذا أضفت نصف القولون، فسوف تفشل التحليل.إذا نظرت إلى Grammar RFC6266، فمن المفترض أن تسبق شبه القولون فقط المعلمة.

نصائح أخرى

شكرا لك - إيجاد هذا بالتأكيد ساعدني.لصالح الآخرين, هنا هو الحل (كما يبدو أن هذا هو لا يزال شيء اليوم???)

أنا إلى حد ما بيئة تسيطر عليها ، لذلك البرمجية التالية يفترض:

  • واحد فقط رأس المحتوى الترتيب
  • العلامة في الشكل: inline; "filename";

سيؤدي هذا إلى إعادة تعيين الاستجابة ContentDisposition رأس ، لذلك اللاحقة كود يعمل بسلاسة:

<!-- language: c# -->
if (response.Content.Headers.ContentDisposition == null)
{
  IEnumerable<string> contentDisposition;
  if (response.Content.Headers.TryGetValues("Content-Disposition", out contentDisposition))
  {
   response.Content.Headers.ContentDisposition = ContentDispositionHeaderValue.Parse(contentDisposition.ToArray()[0].TrimEnd(';').Replace("\"",""));
  }
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top