473,396 Members | 2,039 Online
Bytes | Software Development & Data Engineering Community
Post Job

Home Posts Topics Members FAQ

Join Bytes to post your question to a community of 473,396 software developers and data experts.

Forcing ASP.NET processing of an arbitrary file

I have a simple project server which shares files from within our network.
The ASP.NET front end uses a database to authenticate users, and then based
on their permissions, reaches across the network to various project folders
and enumerates the files within. When clicked on, the file is retrieved and
streamed back across the network to the webserver and then back to the
requestor.

All of this works great; however, since the original call is to an ASPX
page, and the result is a data file (e.g. a word document, a tiff,
whatever), IIS doesn't get a chance to handle the file the way it normally
would.

The specific problem I'm facing is that I have certain HttpHandlers that
specially render certain document types. For example, I might have a
handler registered for the ".foo" document type. Because the actual IIS
request was formed like;

http://mysite/getfile.aspx?File=test.foo

IIS hands this off to the ASPX handler, which then goes and gets test.foo
and returns it.

How can I force IIS to also process the .foo file using the registered
HttpHander? I'm exploring three obvious approaches; and looking for advice
on the best decision and most straightfoward approach.

(1) Use an HttpModule. I've never worked with these; and I'm unfamiliar
with the capabilities, but investigations so far are leading me in this
direction as the "best long term choice".

(2) Find some way to get IIS to execute the HttpHandler processing on the
physical file stream I'm returning. I.e. I open a stream to the file data,
get the filename, and tell IIS to process and return this file as though it
were a regular request. I'm guessing this exists somewhere in the Server or
Request object models, but I haven't discovered anything obvious yet.

(3) Move all my custom HttpHandler code into my file requestor. This would
work, but it's a hack and prevents me from using third-party HttpHandlers in
the same way.

Thanks for any advice.

--Mwells

Nov 19 '05 #1
2 1287

May be another solution is to send content of your file as binary data and
specify the true content type in the HTTP Header like this:
Response.ContentType = "application/ms-word";
Response.AddHeader("Content-Disposition", "attachment;filename=word.doc");

See more in http://www.ondotnet.com/pub/a/dotnet...04/01/asp.html
or http://www.eggheadcafe.com/articles/20011006.asp

Lionel.
"MWells" <outbound__at_sygnal.com> a écrit dans le message de news:
ey**************@tk2msftngp13.phx.gbl...
I have a simple project server which shares files from within our network.
The ASP.NET front end uses a database to authenticate users, and then
based
on their permissions, reaches across the network to various project
folders
and enumerates the files within. When clicked on, the file is retrieved
and
streamed back across the network to the webserver and then back to the
requestor.

All of this works great; however, since the original call is to an ASPX
page, and the result is a data file (e.g. a word document, a tiff,
whatever), IIS doesn't get a chance to handle the file the way it normally
would.

The specific problem I'm facing is that I have certain HttpHandlers that
specially render certain document types. For example, I might have a
handler registered for the ".foo" document type. Because the actual IIS
request was formed like;

http://mysite/getfile.aspx?File=test.foo

IIS hands this off to the ASPX handler, which then goes and gets test.foo
and returns it.

How can I force IIS to also process the .foo file using the registered
HttpHander? I'm exploring three obvious approaches; and looking for
advice
on the best decision and most straightfoward approach.

(1) Use an HttpModule. I've never worked with these; and I'm unfamiliar
with the capabilities, but investigations so far are leading me in this
direction as the "best long term choice".

(2) Find some way to get IIS to execute the HttpHandler processing on the
physical file stream I'm returning. I.e. I open a stream to the file
data,
get the filename, and tell IIS to process and return this file as though
it
were a regular request. I'm guessing this exists somewhere in the Server
or
Request object models, but I haven't discovered anything obvious yet.

(3) Move all my custom HttpHandler code into my file requestor. This
would
work, but it's a hack and prevents me from using third-party HttpHandlers
in
the same way.

Thanks for any advice.

--Mwells

Nov 19 '05 #2
I'm actually doing that already, which keeps the client happy. If I hit a
Uri like;

http://mysite.com/getfile.aspx?FileID=123

And it pulls an Excel file from the database, the type and name are
appropriately specified so that the client recognizes it properly as an
Excel file.

Unfortunately this still excludes HttpHandlers from ASP.NET's processing
chain. If I have an HttpHandler installed that (for example) renders the
contents of the Excel file as HTML, that handler never gets called in the
execution chain.

Originally I thought it was due to the fact that .NET needs the Uri file
extension in order to associate the HttpHandler, so I've rewritten the
access Uri format using an HttpModule.

Now, I can request a file like...

http://mysite.com/files/data.xls

And the file data.xls is actually pulled from a database, mime-typed, and
returned to the client. All works well but the HttpHandler is still
excluded from the processing chain, and my handlers are never run.

I'm going off to think about this for a bit and then I'll fire off a new
post.

"Lionel LASKE" <ll****@c2s.fr> wrote in message
news:uH*************@TK2MSFTNGP11.phx.gbl...

May be another solution is to send content of your file as binary data and
specify the true content type in the HTTP Header like this:
Response.ContentType = "application/ms-word";
Response.AddHeader("Content-Disposition", "attachment;filename=word.doc");

See more in http://www.ondotnet.com/pub/a/dotnet...04/01/asp.html
or http://www.eggheadcafe.com/articles/20011006.asp

Lionel.

Nov 19 '05 #3

This thread has been closed and replies have been disabled. Please start a new discussion.

Similar topics

3
by: D. Alvarado | last post by:
Hello, I have a page that generates a text file (but writes the file with the ".csv" extension) and then I redirect the user so he can save the file header("Location: $my_csv_file"); ...
4
by: Dan Rawson | last post by:
Is there any way to force getopt to process one option first?? I'd like to be able to pass in the name of a configuration file for my application, then have the remaining command-line parameters...
1
by: DJTB | last post by:
zodb-dev@zope.org] Hi, I'm having problems storing large amounts of objects in a ZODB. After committing changes to the database, elements are not cleared from memory. Since the number of...
6
by: S P Arif Sahari Wibowo | last post by:
Hi! I am thinking to have a client-side script doing processing on file downloading, basically the script will process a downloaded file from the server before it received by the user. For...
1
by: Mark Rae | last post by:
Hi, I have to process a very "wide" CSV file. Basically, the file does not appear correctly in Notepad, WordPad etc because each line is 414 characters wide. Ordinarily, I would have read the...
6
by: James Radke | last post by:
Hello, I have a multithreaded windows NT service application (vb.net 2003) that I am working on (my first one), which reads a message queue and creates multiple threads to perform the processing...
0
by: Conrad | last post by:
Greetings, For user actions on a wxWidget that trigger multiple events for that wxWidget, is the order those events are processed in undefined, and therefore arbitrary from one platform (ie...
2
by: kmsuzuki | last post by:
I have a Windows Server 2003 + IIS6 with both .Net 1.1 and 2.0 installed. In the past, I've had no problems using the ASP.NET tab in the IIS Manager to specify which framework version a given...
1
by: Xah Lee | last post by:
Text Processing with Emacs Lisp Xah Lee, 2007-10-29 This page gives a outline of how to use emacs lisp to do text processing, using a specific real-world problem as example. If you don't know...
0
by: Charles Arthur | last post by:
How do i turn on java script on a villaon, callus and itel keypad mobile phone
0
BarryA
by: BarryA | last post by:
What are the essential steps and strategies outlined in the Data Structures and Algorithms (DSA) roadmap for aspiring data scientists? How can individuals effectively utilize this roadmap to progress...
1
by: nemocccc | last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
1
by: Sonnysonu | last post by:
This is the data of csv file 1 2 3 1 2 3 1 2 3 1 2 3 2 3 2 3 3 the lengths should be different i have to store the data by column-wise with in the specific length. suppose the i have to...
0
marktang
by: marktang | last post by:
ONU (Optical Network Unit) is one of the key components for providing high-speed Internet services. Its primary function is to act as an endpoint device located at the user's premises. However,...
0
Oralloy
by: Oralloy | last post by:
Hello folks, I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>". The problem is that using the GNU compilers,...
0
jinu1996
by: jinu1996 | last post by:
In today's digital age, having a compelling online presence is paramount for businesses aiming to thrive in a competitive landscape. At the heart of this digital strategy lies an intricately woven...
0
agi2029
by: agi2029 | last post by:
Let's talk about the concept of autonomous AI software engineers and no-code agents. These AIs are designed to manage the entire lifecycle of a software development project—planning, coding, testing,...
0
isladogs
by: isladogs | last post by:
The next Access Europe User Group meeting will be on Wednesday 1 May 2024 starting at 18:00 UK time (6PM UTC+1) and finishing by 19:30 (7.30PM). In this session, we are pleased to welcome a new...

By using Bytes.com and it's services, you agree to our Privacy Policy and Terms of Use.

To disable or enable advertisements and analytics tracking please visit the manage ads & tracking page.