Request.Url.AbsoluteUri的结果不同,缺少default.aspx

时间:2013-01-23 12:53:27

标签: c# asp.net iis

我有一个http模块,当用户未获得授权时,该模块会重定向到网站。然后,该网站检查凭据并根据查询字符串将用户返回到原始页面。

我遇到的问题是Request.Url.AbsoluteUri似乎在请求根目录时省略default.aspx,例如http://example/application/

使用下面的测试用例可以观察到此行为。在Response.Redirect

中使用Application_AuthenticateRequest

请注意,VS Web开发服务器Cassini行为正常并将正确重定向到http://example/application/?url=http://example/application/default.aspx我认为这与IIS处理请求的方式有所不同。 (我正在运行IIS6)

namespace HI.Test {
    public class Authentication : IHttpModule {

        private HttpRequest Request { get { return HttpContext.Current.Request; } }
        private HttpResponse Response { get { return HttpContext.Current.Response; } }
        private Cache Cache { get { return HttpContext.Current.Cache; } }

        public void Init(HttpApplication application) {
            application.AuthenticateRequest += (new EventHandler(Application_AuthenticateRequest));
        }

        private void Application_AuthenticateRequest(Object source, EventArgs e) {
            if (Request.QueryString["url"] == null) {
                Cache.Insert("URLRedirected", Request.Url.AbsoluteUri);
                Response.Redirect(Request.Url.AbsoluteUri + "?url=" + Request.Url.AbsoluteUri);
            }
        }

        public void Dispose() {

        }
    }
}

我显然正在寻找解决问题的方法,而且我也想知道为什么会这样。

0 个答案:

没有答案