我无法使用rebex通过SFTP从其他服务器打开.pdf,.doc等文件

时间:2014-03-31 08:57:26

标签: asp.net 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 个答案:

答案 0 :(得分:0)

是否可以在此处发布异常的完整堆栈跟踪?您可以通过修改catch块来获取堆栈跟踪:

            try
            {
                //... your code
            }
            catch (Exception ex)
            {
                Response.ContentType = "text/plain";
                Response.Write(ex.ToString());
                Response.End();
            }