我有一个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() {
}
}
}
我显然正在寻找解决问题的方法,而且我也想知道为什么会这样。