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