У меня есть обработчик ресурсов Response.WriteFile (fileName) на основе параметра, переданного через строку запроса. Я правильно обрабатываю mimetype, но проблема в некоторых браузерах, имя файла отображается как Res.ashx (имя обработчика) вместо MyPdf.pdf (файл, который я выводю). Может кто-нибудь сообщить мне, как изменить имя файла, когда он отправляется обратно на сервер? Вот мой код:
// Get the name of the application
string application = context.Request.QueryString["a"];
string resource = context.Request.QueryString["r"];
// Parse the file extension
string[] extensionArray = resource.Split(".".ToCharArray());
// Set the content type
if (extensionArray.Length > 0)
context.Response.ContentType = MimeHandler.GetContentType(
extensionArray[extensionArray.Length - 1].ToLower());
// clean the information
application = (string.IsNullOrEmpty(application)) ?
"../App_Data/" : application.Replace("..", "");
// clean the resource
resource = (string.IsNullOrEmpty(resource)) ?
"" : resource.Replace("..", "");
string url = "./App_Data/" + application + "/" + resource;
context.Response.WriteFile(url);





Этот пост Скотта Хансельмана должен быть полезным:
http://www.hanselman.com/blog/CommentView.aspx?guid=360
Исходя из комментария Джоэла, ваш фактический код будет выглядеть примерно так:
context.Response.AddHeader("content-disposition", "attachment; filename = " + resource);
Спасибо, ребята, за ответ. Окончательный код работает и проверяет наличие PDF.
if (extensionArray[extensionArray.Length - 1].ToLower() == "pdf")
context.Response.AddHeader("content-disposition",
"Attachment; filename = " + resource);