Кажется, проблема в том, что вы используете
((LinkButton)sender).Text
, чтобы получить имя файла. Если вызывающая ссылка LinkButton жестко закодирована в localhost
в значение Text, вам придется исправить ее там.
Если вы жестко закодировали свойство Text вашей LinkButton в что-то вроде http://localhost:0000/....
, вам необходимо исправить это. С почти нулевыми исключениями все ссылки в вашем приложении должны быть относительными, например /home/index
или /support/default.aspx
.
Обратите внимание, что заголовок Content-Disposition
просто задает имя файла, которое браузер использует или представляет пользователю - оно может быть установлено на что угодно и не должно ссылаться на реальный файл на сервере.
Таким образом, если вам просто нужно имя файла (удаление всей информации о пути и т. Д.), Вы можете использовать
var fileName = System.IO.Path.GetFileName(((LinkButton)Sender).Text);
затем используйте полученное значение в присваивании заголовка Content-Disposition
.
Обновление
Когда браузер говорит «Хотите загрузить xxxx.xx с localhost?», Он получает имя сервера (в данном случае localhost) с URL-адреса, который используется для загрузки файла. Если вы запустите одно и то же приложение, скажем, на «www.mysite.com», браузер скажет: «Хотите загрузить xxxx.xx с www.mysite.com?» По соображениям безопасности и т. Д. Вы не сможете переопределить имя сервера, используемого в этом приглашении.
Заголовок Content-Disposition
просто устанавливает имя файла, которое браузер показывает пользователю.