ContentDisposition类引发不一致的异常



我使用WebClient来发现下载文件名,使用内容处置。

调用client.ResponseHeaders["content-disposition"]返回以下字符串:

attachment; filename="2013122100000030141b0feedd40488fa2b0691fa6ae2a.zip

然后,

fileName = new ContentDisposition(responseHeader).FileName;

引发异常"指定的内容处置无效。">

System.FormatException: The specified content disposition is invalid. ---> System.FormatException: The mail header is malformed.
at System.Net.Mime.MailBnfHelper.ReadQuotedString(String data, Int32& offset, StringBuilder builder, Boolean doesntRequireQuotes, Boolean permitUnicodeInDisplayName)
at System.Net.Mime.ContentDisposition.ParseValue()
--- End of inner exception stack trace ---
at System.Net.Mime.ContentDisposition.ParseValue()
at System.Net.Mime.ContentDisposition..ctor(String disposition)

我发现内容处置字符串缺少尾部引号。当引号(")放在.zip之后时,它就起作用了。

服务器似乎是IIS 6。这是ContentDisposition类中的错误吗?我不想担心通过删除不需要的引号来处理该字符串,但我无法解释在这种情况下"谁"错了,是服务器还是类。知道吗?

更新:

根据HTTP内容处置规范:

Content Disposition响应标头字段已被提议作为如果用户请求将内容保存到文件中。此用法是派生的来自RFC 1806[35]中内容处置的定义。

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 ) An example is
Content-Disposition: attachment; filename="fname.ext"

从引用的RFC来看,引号不是一个约束,所以我认为ContentDisposition类应该更灵活地接受文件名中未加引号的字符串。

相关的RFC是http://greenbytes.de/tech/webdav/rfc6266.html.不,以引号开头而不加引号结尾是不正确的。

相关内容

  • 没有找到相关文章

最新更新