Как скачать файл и сразу же служить ему клиента в ASP.NET?

голоса
1

В основном нужно обслуживать файлы из места, которое требует проверки подлинности Windows. Вместо того, чтобы дело моего клиента с ним напрямую, я хотел бы реализовать процесс, так что они могут просто загрузить файлы, как если бы они были на моем сервере, после того, как они вошли в мою систему, конечно. Вот то, что я до сих пор, что, кажется, не правильно работать:

// Create the request
WebRequest request = HttpWebRequest.Create(button.CommandArgument);
request.Credentials = new NetworkCredential(_username,_password);


// Get the response
WebResponse response = request.GetResponse();
StreamReader responseStream = new StreamReader( response.GetResponseStream());

// Send the response directly to output
Response.ContentEncoding = responseStream.CurrentEncoding;
Response.ContentType = request.ContentType;
Response.Write(responseStream.ReadToEnd());
Response.End();

Когда я пытаюсь это я могу просмотреть файл, но что-то не так с кодированием или типом контента и, например, PDF будет содержать 16 пустых страниц (вместо 16 страниц текста).

Любая идея, что мне не хватает?

Вы можете изменить название этого вопроса, если есть лучший способ формулируя этот вопрос

Обновление: Пробовал два ответа ниже , но не повезло. Теперь я думаю , что тип содержимого и кодирование в порядке, но , возможно, проверка подлинности не удается? Содержание длины намного меньше , чем на самом деле должно быть ... Могу ли я использовать неправильный метод проверки подлинности Windows?

Задан 22/06/2009 в 21:06
источник пользователем
На других языках...                            


3 ответов

голоса
1

В зависимости от того, как / что у вас есть. Я хотел бы сделать несколько вещей.

Response.Clear() в первую очередь, чтобы удалить все, что может быть вынесено.

Я бы тогда добавить заголовок, с набором контента диспозиции и отправить его вниз в качестве фактического вложения, а не просто писать его пользователю.

Ответил 22/06/2009 в 21:15
источник пользователем

голоса
1

Похоже, что вы посылаете неправильный тип содержимого в вашем последнем блоке кода. Вы посылаете тип исходного запроса пользователя, а не тип содержимого файла, который вы извлеченные. Изменить это:

Response.ContentType = request.ContentType;

чтобы:

Response.ContentType = response.ContentType;
Ответил 22/06/2009 в 21:08
источник пользователем

голоса
0

Если ваша проблема связана с сетевыми учетными данными, вы можете попробовать другой подход. Если вы предоставляете доступ HTTP к идентичности, пула приложений веб-сайта использует, вы можете избежать того, чтобы указать имя пользователя / пароль учетных данных в запросе. Это также дает дополнительное преимущество не необходимости хранить пароль где-то.

Ответил 23/06/2009 в 01:25
источник пользователем

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more