Response.TransmitFile() problem over network

  • Thread starter Thread starter Julia B
  • Start date Start date
J

Julia B

Hi, I've got an ASP.NET 2.0 application where I need to open files. I had it
working on my local webserver, with the files on my C drive.

However I've now published the application to our production web server
(Windows 2003 SP2) and the files are on a shared folder within that web
server.

If I try and run the application on the webserver the transmit file just
times out. If I try and run the application in debug mode (i.e on my local
webserver connecting to the files on the production web server) the transmit
file causes an instance of Word or Excel as relevant to open but the file is
blank.

The files concerned are very very small, just a few bytes in some cases, so
I know it's not a file size issue. I've also checked permissions and the
ASPNET account has the correct permissions (I've checked this by saving files
to the same shared folder using the application).

Does anyone have any hints? Here's the code:

Response.Buffer = False
Response.Clear()
Response.ClearHeaders()
'now get the record name
If e.CommandName = "OrigRecord" Then
filePath = selectedRow.Cells(9).Text
filePath = Global.Global_asax.calRecordFilePath & filePath
Response.AppendHeader("Content-Disposition", "attachment;filename=" &
System.IO.Path.GetFileName(filePath))
Response.ContentType = "text/csv"
Else
filePath = selectedRow.Cells(10).Text
filePath = Global.Global_asax.calReportFilePath & filePath
Response.AppendHeader("Content-Disposition", "attachment;filename=" &
System.IO.Path.GetFileName(filePath))
Response.ContentType = "application/msword"
End If
'now we've got the full path for the file, open it
Response.TransmitFile(filePath)
Response.End()

Thanks in advance
Julia
 
Hi, I've got an ASP.NET 2.0 application where I need to open files. I
had it working on my local webserver, with the files on my C drive.

However I've now published the application to our production web
server (Windows 2003 SP2) and the files are on a shared folder within
that web server.

If I try and run the application on the webserver the transmit file
just times out. If I try and run the application in debug mode (i.e on
my local webserver connecting to the files on the production web
server) the transmit file causes an instance of Word or Excel as
relevant to open but the file is blank.

The files concerned are very very small, just a few bytes in some
cases, so I know it's not a file size issue. I've also checked
permissions and the ASPNET account has the correct permissions (I've
checked this by saving files to the same shared folder using the
application).

Does anyone have any hints? Here's the code:

Response.Buffer = False
Response.Clear()
Response.ClearHeaders()
'now get the record name
If e.CommandName = "OrigRecord" Then
filePath = selectedRow.Cells(9).Text
filePath = Global.Global_asax.calRecordFilePath & filePath
Response.AppendHeader("Content-Disposition", "attachment;filename="
&
System.IO.Path.GetFileName(filePath))
Response.ContentType = "text/csv"
Else
filePath = selectedRow.Cells(10).Text
filePath = Global.Global_asax.calReportFilePath & filePath
Response.AppendHeader("Content-Disposition", "attachment;filename="
&
System.IO.Path.GetFileName(filePath))
Response.ContentType = "application/msword"
End If
'now we've got the full path for the file, open it
Response.TransmitFile(filePath)
Response.End()

Thanks in advance
Julia

Share folder? Outside of the application like below?

IIS Root
--> Web Application
--> Shared Folder

If so, the issue is IIS does not allow transversal of the file system.
It only allows you to read things under root. I don't have the specifics
in front of me, but you can turn this feature off (google it). Realize
there are potential security implications. I would not recommend this
approach, unless you cannot do my second recommendation (below):

You can also "trick" IIS to allowing you to use this directory. Every
site that needs to hit this directory adds the folder (aliased, if
necessary) to the web site (In IIS, this is done by adding a new virtual
folder to the application folder).

No matter which approach, make sure you have the proper permissions for
the account ASP.NET is running under. If that account cannot read the
files, you will not be able to serve them up.



--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

Twitter: @gbworld
Blog: http://gregorybeamer.spaces.live.com

******************************************
| Think outside the box! |
******************************************
 
Thanks Gregory, I'll talk to our network administrators and see if I can
implement your recommended approach. I'll let you know how I get on.
Julia.
 
Gregory

Just wanted to let you know that the virtual directory solution worked.
Thanks very much!

Julia
 
Gregory

Just wanted to let you know that the virtual directory solution
worked. Thanks very much!

Julia:

Thanks for posting back. I figured that would work. The downside is it has
to be documented for maintainability.



--
Gregory A. Beamer
MVP; MCP: +I, SE, SD, DBA

Twitter: @gbworld
Blog: http://gregorybeamer.spaces.live.com

*******************************************
| Think outside the box! |
*******************************************
 
Back
Top