所以它适用于 HttpResponse 类:
Response.AddHeader("Content-Disposition", "attachment; filename=\"" + fileName + "\"");
(我们必须为 IE 编码文件名)但现在应该为 HttpListener 完成。它适用于 IE。问题是 FireFox 和 Chrome 不会像 IE 那样解码编码的标头值,但是 HttpResponse.AddHeader 不允许非拉丁字符(来自 System.Net 的代码):
if ((ch == '\x007f') || ((ch < ' ') && (ch != '\t')))
throw new ArgumentException(SR.GetString("net_WebHeaderInvalidControlChars"), "value");
我尝试使用反射在支票周围走动:
Type type = response.Headers.GetType();
PropertyInfo info = type.GetProperty("InnerCollection",
BindingFlags.GetProperty | BindingFlags.Instance | BindingFlags.NonPublic);
NameValueCollection headers = (NameValueCollection)info.GetValue(response.Headers, null);
headers.Add(name, value);
什么都没有出现,但文件名已完全损坏。我应该怎么做才能让它工作?