【问题标题】:retrieve the hidden default.aspx segment of a url检索 url 的隐藏 default.aspx 段
【发布时间】:2010-10-30 14:20:58
【问题描述】:

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

原因是,我非常接近在应用程序级别创建一个 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!你有更好的方法来检查物理文件的有效性吗?

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      Request.Url.ToString()
      

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

        • 这也不起作用 :( 它返回 ~/,当检查 File.Exists 时,它返回 false!是否缺少 IIS 设置?
        • 我理解正确吗,您想要的是获取所请求文件的物理文件路径的能力吗?请求的 URL 可能类似于“mydomain.com”,而您希望结果是“~/default.aspx”?
        猜你喜欢
        • 2010-11-03
        • 1970-01-01
        • 1970-01-01
        • 2013-07-07
        • 1970-01-01
        • 2012-05-31
        • 1970-01-01
        • 2018-11-03
        • 1970-01-01
        相关资源
        最近更新 更多