检索网址的隐藏default.aspx段

时间:2009-06-02 05:47:17

标签: c# asp.net http-status-code-404

我尝试使用HttpRequest的各种方法显示url,我也尝试了VirtualPathUtility对象,但是我从来没有能够显示默认的隐藏部分“default.aspx”...方法是什么或者检索此网址段的属性?

原因是,我非常接近于在应用程序级别创建404,通过在URL的映射路径上使用File.Exist()来捕获所有404,甚至是html页面,遗憾的是,这在默认情况下不起作用页。

我看到很少有文章尝试相反的做法,当它发生时删除default.aspx,这不是这里的情况。

编辑:这是我正在尝试的:

string fullOrigionalpath = context.Request.CurrentExecutionFilePath.ToString();
bool newUrl = System.IO.File.Exists(context.Server.MapPath(fullOrigionalpath));
if (!newUrl) throw new HttpException(404,"page not found");

现在你看,如果页面是 localhost / lexus / default.aspx ,它可以正常运行而没有错误,但如果我输入地址 http://localhost/lexus/ ,抛出错误,因为如果你尝试输出fullOriginalPath,它没有“default.aspx”部分,所以Exists返回false!你有更好的方法来检查物理文件的有效性吗?

3 个答案:

答案 0 :(得分:1)

我认为这根本不可能,所以我依靠IIS7.0重写功能强制default.aspx始终出现..

答案 1 :(得分:0)

我不确定你的“隐藏部分”是什么意思,但你试过......

Request.Url.ToString()

答案 2 :(得分:0)

您要在AppRelativeCurrentExecutionFilePath对象上寻找HttpRequest属性:http://msdn.microsoft.com/en-us/library/system.web.httprequest.apprelativecurrentexecutionfilepath.aspx

如果有人向http://yourdomain.com/发出请求,则AppRelativeCurrentExecutionFilePath的值为"~/default.aspx"