Я не могу открыть.pdf, .doc и т. Д. Файл с других серверов через SFTP, используя rebex
У меня есть два разных сервера, как показано ниже.
1. WebServer - где находится мое приложение
2. FileServer - где мои все загруженные файлы находятся в перкулярной папке / папке
Теперь в моем веб-приложении я создал одну страницу, которая отображает все загруженные файлы из FileServer (который я загрузил).
Но проблема в том, что когда я пытаюсь открыть / прочитать этот файл, я не могу. У меня есть все права на SFTP. и я получаю ниже вопрос в блоке Try-catch. "Невозможно оценить выражение, потому что код оптимизирован или собственный фрейм находится над стеком вызовов". Я использовал REBEX для загрузки и скачивания файлов.
Примечание: я могу открывать простой текстовый файл (.txt), но не другие форматированные файлы, такие как (.PDF, .docx, .jpg и т. Д.)
Мой код чтения файла, как показано ниже.
protected void LinkButton1_Click(object sender, EventArgs e)
{
try
{
LinkButton lbtn = (LinkButton)sender;
using (Sftp _sftp = new Sftp())
{
_sftp.Connect(serverNm, 22);
_sftp.Login(username, password);
_sftp.ChangeDirectory(currentDirectory);
Stream stream = _sftp.GetStream(lbtn.ToolTip.ToString(), FileMode.Open, FileAccess.Read);
StreamReader sourceStream = new StreamReader(stream);
Byte[] buffer = Encoding.UTF8.GetBytes(sourceStream.ReadToEnd());
Response.Buffer = true;
if (lbtn.ToolTip.IndexOf(".pdf") > 0)
{
Response.ContentType = "application/pdf";
}
else if (lbtn.ToolTip.IndexOf(".txt") > 0)
{
Response.ContentType = "text/plain";
}
else if (lbtn.ToolTip.IndexOf(".xls") > 0)
{
Response.ContentType = "application/ms-excel";
}
else if (lbtn.ToolTip.IndexOf(".doc") > 0)
{
Response.ContentType = "application/msword";
}
else if (lbtn.ToolTip.IndexOf(".jpeg") > 0)// || lbtn.ToolTip.IndexOf(".jpg") > 0)
{
Response.ContentType = "image/jpeg";
}
else if (lbtn.ToolTip.IndexOf(".jpg") > 0)
{
Response.ContentType = "image/jpg";
}
else if (lbtn.ToolTip.IndexOf(".bmp") > 0)
{
Response.ContentType = "image/png";
}
Response.AddHeader("Content-Length", "attachment;filename=" + buffer.Length.ToString());
Response.BinaryWrite(buffer);
Response.End();
}
}
catch (Exception ex)
{
}
}
Так что любой может помочь решить эту проблему.
Я использую последний браузер Mozila.
Спасибо.
1 ответ
Можно ли опубликовать полную трассировку стека исключения здесь? Вы можете получить трассировку стека, изменив блок catch следующим образом:
try
{
//... your code
}
catch (Exception ex)
{
Response.ContentType = "text/plain";
Response.Write(ex.ToString());
Response.End();
}