Hide ASPX Extension

M

Matt

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
K

Kevin Spencer

You can't hide it. You can, however, configure the ASP.Net ISAPI to use a
different extension, through IIS.

--
HTH,

Kevin Spencer
Microsoft MVP
Professional Numbskull

The man who questions opinions is wise.
The man who quarrels with facts is a fool.

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
G

gerry

configure iis to have all requests ( * ) handled by asp.net
configure the appropriate static resource handlers in your web.config - ..gif , .js , .css etc
in Application_BeginRequest use url rewriting to send the remaining requests to the proper handler

ie
requests for http://www.mysite.com sent to default.aspx
requests for http://www.mysite.com/products sent to products.aspx
requests for http://www.mysite.com/support sent to support.aspx
....


Gerry

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
M

Matt

Gerry,

Here is the problem I am having. I can hide the and manipulate the extension with a HTTPHandler on the post but once the process makes a roundtrip ASP.NET automatically sets the action="page.aspx" in a form and on the response the browser now displays the full filename with extension because it expects to post to itself, which it has to.

Am I missing something here with how Request/Response is working with web forms?

Thanks,

Matt


configure iis to have all requests ( * ) handled by asp.net
configure the appropriate static resource handlers in your web.config - .gif , .js , .css etc
in Application_BeginRequest use url rewriting to send the remaining requests to the proper handler

ie
requests for http://www.mysite.com sent to default.aspx
requests for http://www.mysite.com/products sent to products.aspx
requests for http://www.mysite.com/support sent to support.aspx
...


Gerry

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
G

gerry

sorry - i forgot about that ,
one way to handle this is via a response filter ( HttpModule ) something along the lines of this :

- in your page's <head> section add :
<FormAction runat="Server" id="FormAction" href="" />

- somewhere during the page processing set the FormAction href value something like this :
FormAction.Attributes["href"] = Request.HttpMethod=="POST" ? Request.Headers["Referer"] : Request.RawUrl;

- in your response filter :
use regex to pull out the FormAction href value
use regex to delete the FormAction tag
use regex to replace the <form> action value

To see this in action look at www.hgha.ca - you will see that all pages have the .htm extension but in fact there exists only one single .aspx page that handles all .htm requests. Ya I know - it looks kindof rough in spots but thats because the users 'compose' most of the content online themselves

Gerry



Gerry,

Here is the problem I am having. I can hide the and manipulate the extension with a HTTPHandler on the post but once the process makes a roundtrip ASP.NET automatically sets the action="page.aspx" in a form and on the response the browser now displays the full filename with extension because it expects to post to itself, which it has to.

Am I missing something here with how Request/Response is working with web forms?

Thanks,

Matt


configure iis to have all requests ( * ) handled by asp.net
configure the appropriate static resource handlers in your web.config - .gif , .js , .css etc
in Application_BeginRequest use url rewriting to send the remaining requests to the proper handler

ie
requests for http://www.mysite.com sent to default.aspx
requests for http://www.mysite.com/products sent to products.aspx
requests for http://www.mysite.com/support sent to support.aspx
...


Gerry

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
J

Juan T. Llibre

If you do that, I fear your site's throughput will sink.

What you are suggesting would increase the site's processing by at least 2-300%
which would reduce your site's throughput to 33% or 25% of what it should handle.

For what ? For an esthetic "hide my extension" consideration ?

Thanks, but no thanks.

I value ASP.NET for its processing capability, which allows me to have much
more throughput than comparable platforms...with a lot less programming effort.

Hobbling my web server to satisfy an esthetic desire is pointless, imho.





configure iis to have all requests ( * ) handled by asp.net
configure the appropriate static resource handlers in your web.config - .gif , .js , .css etc
in Application_BeginRequest use url rewriting to send the remaining requests to the proper handler

ie
requests for http://www.mysite.com sent to default.aspx
requests for http://www.mysite.com/products sent to products.aspx
requests for http://www.mysite.com/support sent to support.aspx
....


Gerry

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
J

Juan T. Llibre

Gerry,

inherent to *every* question is the underlying metainfo
as to whether the answer sought is convenient or not.

That saves a lot of barking up the wrong trees,
and warns all readers about the pitfalls in proposed code.

In this case, implementing what you proposed would increase the server workload
by a large factor, reducing the throughput for the server where that "solution" is implemented.

Sorry, nothing personal, but the proposed answer,
though technically correct, is worthless as a solution.

In any case, it's much simpler to hide the aspx extension by using a frameset in which
the first frame has zero for its number of rows and all the content is written in the
second frame, with * specified in the default frameset for the number of its rows.

That will, effectively, hide the extension for the default page but won't overload the server.
All other pages are exposed as links which have the 2nd frame as their target.

This is an old HTML trick to hide page extensions, although it has nothing to do with ASP.NET.
 
M

Matt

How about this, if I can't do this then I loose a 500K contract, is that underlying issue good enough to require the hiding of an extension!
configure iis to have all requests ( * ) handled by asp.net
configure the appropriate static resource handlers in your web.config - .gif , .js , .css etc
in Application_BeginRequest use url rewriting to send the remaining requests to the proper handler

ie
requests for http://www.mysite.com sent to default.aspx
requests for http://www.mysite.com/products sent to products.aspx
requests for http://www.mysite.com/support sent to support.aspx
...


Gerry

Does anyone know how to hide the ASPX extension of web pages in ASP.Net 2.0?

Thanks,

Matt
 
M

Matt

Juan,

I have never heard of this method nor ever seen it implemented. Where can I find more information about it's use and how to implement it?

Thanks,

Matt


Gerry,

inherent to *every* question is the underlying metainfo
as to whether the answer sought is convenient or not.

That saves a lot of barking up the wrong trees,
and warns all readers about the pitfalls in proposed code.

In this case, implementing what you proposed would increase the server workload
by a large factor, reducing the throughput for the server where that "solution" is implemented.

Sorry, nothing personal, but the proposed answer,
though technically correct, is worthless as a solution.

In any case, it's much simpler to hide the aspx extension by using a frameset in which
the first frame has zero for its number of rows and all the content is written in the
second frame, with * specified in the default frameset for the number of its rows.

That will, effectively, hide the extension for the default page but won't overload the server.
All other pages are exposed as links which have the 2nd frame as their target.

This is an old HTML trick to hide page extensions, although it has nothing to do with ASP.NET.
 
J

Juan T. Llibre

re:
I have never heard of this method nor ever seen it implemented.
Where can I find more information about it's use and how to implement it?

That method not only hides the extension, it hides the whole filename!

It's quite simple :

default.aspx :
=========
<html>
<head>
<title>Main</title>
</head>
<frameset rows="0,*">
<frame name="a" scrolling="no" noresize="noresize" target="main" src="a.aspx">
<frameset cols="*">
<frame name="main" src="main.aspx">
</frameset>
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</body>
</noframes>
</frameset>
</html>
======

main.aspx :
========
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frameset</title>
</head>
<body>
<a href="someother.aspx" target="main">Some other ASPX page</a>
</body>
</html>
=======

That's it!

You can place links to any *.aspx page in main.aspx, and they will be displayed
in the "main" frame without the filename being displayed in the browser!

You'll probably need to include some sort of navigation menu in all the pages linked to in
main.aspx.
You'll also need to include Page and Language directives if you need them.

That shouldn't be too hard of a job...





Juan,

I have never heard of this method nor ever seen it implemented. Where can I find more information
about it's use and how to implement it?

Thanks,

Matt


Gerry,

inherent to *every* question is the underlying metainfo
as to whether the answer sought is convenient or not.

That saves a lot of barking up the wrong trees,
and warns all readers about the pitfalls in proposed code.

In this case, implementing what you proposed would increase the server workload
by a large factor, reducing the throughput for the server where that "solution" is implemented.

Sorry, nothing personal, but the proposed answer,
though technically correct, is worthless as a solution.

In any case, it's much simpler to hide the aspx extension by using a frameset in which
the first frame has zero for its number of rows and all the content is written in the
second frame, with * specified in the default frameset for the number of its rows.

That will, effectively, hide the extension for the default page but won't overload the server.
All other pages are exposed as links which have the 2nd frame as their target.

This is an old HTML trick to hide page extensions, although it has nothing to do with ASP.NET.
 
M

Matt

Jaun,

Thanks a bunch! I will definitely look into doing this. Do you know if using master pages with this methods would cause any issues?

Thanks again,

Matt


Juan T. Llibre said:
I have never heard of this method nor ever seen it implemented.
Where can I find more information about it's use and how to implement it?

That method not only hides the extension, it hides the whole filename!

It's quite simple :

default.aspx :
=========
<html>
<head>
<title>Main</title>
</head>
<frameset rows="0,*">
<frame name="a" scrolling="no" noresize="noresize" target="main" src="a.aspx">
<frameset cols="*">
<frame name="main" src="main.aspx">
</frameset>
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</body>
</noframes>
</frameset>
</html>
======

main.aspx :
========
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frameset</title>
</head>
<body>
<a href="someother.aspx" target="main">Some other ASPX page</a>
</body>
</html>
=======

That's it!

You can place links to any *.aspx page in main.aspx, and they will be displayed
in the "main" frame without the filename being displayed in the browser!

You'll probably need to include some sort of navigation menu in all the pages linked to in
main.aspx.
You'll also need to include Page and Language directives if you need them.

That shouldn't be too hard of a job...





Juan,

I have never heard of this method nor ever seen it implemented. Where can I find more information
about it's use and how to implement it?

Thanks,

Matt


Gerry,

inherent to *every* question is the underlying metainfo
as to whether the answer sought is convenient or not.

That saves a lot of barking up the wrong trees,
and warns all readers about the pitfalls in proposed code.

In this case, implementing what you proposed would increase the server workload
by a large factor, reducing the throughput for the server where that "solution" is implemented.

Sorry, nothing personal, but the proposed answer,
though technically correct, is worthless as a solution.

In any case, it's much simpler to hide the aspx extension by using a frameset in which
the first frame has zero for its number of rows and all the content is written in the
second frame, with * specified in the default frameset for the number of its rows.

That will, effectively, hide the extension for the default page but won't overload the server.
All other pages are exposed as links which have the 2nd frame as their target.

This is an old HTML trick to hide page extensions, although it has nothing to do with ASP.NET.
 
J

Juan T. Llibre

re:
Do you know if using master pages with this methods would cause any issues?

You can't have it all, Matt.

Master Pages and Frames serve, basically, the same purpose.
It's one or the other.




Juan,

Thanks a bunch! I will definitely look into doing this. Do you know if using master pages with
this methods would cause any issues?

Thanks again,

Matt


re:
I have never heard of this method nor ever seen it implemented.
Where can I find more information about it's use and how to implement it?

That method not only hides the extension, it hides the whole filename!

It's quite simple :

default.aspx :
=========
<html>
<head>
<title>Main</title>
</head>
<frameset rows="0,*">
<frame name="a" scrolling="no" noresize="noresize" target="main" src="a.aspx">
<frameset cols="*">
<frame name="main" src="main.aspx">
</frameset>
<noframes>
<body>
<p>This page uses frames, but your browser doesn't support them.</p>
</body>
</noframes>
</frameset>
</html>
======

main.aspx :
========
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Frameset</title>
</head>
<body>
<a href="someother.aspx" target="main">Some other ASPX page</a>
</body>
</html>
=======

That's it!

You can place links to any *.aspx page in main.aspx, and they will be displayed
in the "main" frame without the filename being displayed in the browser!

You'll probably need to include some sort of navigation menu in all the pages linked to in
main.aspx.
You'll also need to include Page and Language directives if you need them.

That shouldn't be too hard of a job...





Juan,

I have never heard of this method nor ever seen it implemented. Where can I find more information
about it's use and how to implement it?

Thanks,

Matt


Gerry,

inherent to *every* question is the underlying metainfo
as to whether the answer sought is convenient or not.

That saves a lot of barking up the wrong trees,
and warns all readers about the pitfalls in proposed code.

In this case, implementing what you proposed would increase the server workload
by a large factor, reducing the throughput for the server where that "solution" is implemented.

Sorry, nothing personal, but the proposed answer,
though technically correct, is worthless as a solution.

In any case, it's much simpler to hide the aspx extension by using a frameset in which
the first frame has zero for its number of rows and all the content is written in the
second frame, with * specified in the default frameset for the number of its rows.

That will, effectively, hide the extension for the default page but won't overload the server.
All other pages are exposed as links which have the 2nd frame as their target.

This is an old HTML trick to hide page extensions, although it has nothing to do with ASP.NET.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top