0

我尝试使用 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!你有更好的方法来检查物理文件的有效性吗?

4

3 回答 3

1

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

于 2009-07-02T22:10:10.173 回答
0

我不确定您所说的“隐藏部分”是什么意思,但您是否尝试过...

Request.Url.ToString()
于 2009-06-02T06:14:53.770 回答
0

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

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

于 2009-06-02T06:23:06.377 回答