2015-07-10 57 views
0

目前我将尝试从SQL数据库从一个Web应用程序VB.NET

这里检索文件路径打开我的web应用程序文件打开一个文件,是我的代码,将打开的时候我双倍的文件单击列表框中的一个索引。

Protected Sub userdoubleClick() 
    Dim selectedPath As String 

    Try 
     fileConnection.Open() 


     selectedFile = FileListBox.SelectedValue 

     'takes the selected items from the listbox and searches the database for the file 
     'and will open the file for the user 
     fileCommand.CommandText = "SELECT filePath FROM ImportedFiles WHERE FileName = '" & selectedFile & "'" 

     fileDataReader = fileCommand.ExecuteReader 
     Do While fileDataReader.Read 
      selectedPath = fileDataReader.GetValue(0) 
     Loop 

     System.Diagnostics.Process.Start(selectedPath) 

    Catch ex As Exception 

    End Try 

    fileConnection.Close() 


End Sub 

当我在本地PC上运行它时,它工作正常,但是当我将它发布到服务器时,它不会打开文件。

+0

你在说什么?本地机器上的路径?相对于您网站根目录的路径?请提供示例 – Steve

+0

文件路径位于共享驱动器中,并且看起来像这样\\ webapp \ backup \ Archived \ 20150709_1324849.pdf – averyto8

+0

打开文件后,您要如何处理该文件?你是否将内容返回给浏览器?你正在处理文件?另外,当你说它“不会打开”你是什么意思?你是否遇到异常?我敢打赌,例外是权限问题,特别是如果文件在共享服务器上。 –

回答

2

System.Diagnostics.Process.Start(selectedPath)将在运行Web应用程序的机器上打开文件;换句话说,它在本地运行时在本地机器上打开它,但在部署时在服务器上打开。这只是不会起作用。

ASP.Net Download file to client browser

1

如果你从Web应用程序访问的文件,然后在其下的文件被打开用户身份不是登录到你的应用程序用户。它是运行IIS应用程序池的用户。这是需要授予共享驱动器权限的用户。

解决此问题的方法很多,包括更改应用程序池运行的环境或将文件制作为本地文件。

相关问题