我有一个 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() {
}
}
}
我显然正在寻找解决问题的方法,并且我想了解为什么会发生这种情况。