0

我有一个 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() {

        }
    }
}

我显然正在寻找解决问题的方法,并且我想了解为什么会发生这种情况。

4

0 回答 0