我们正在努力使html5mode与AngularJs一起使用,最后的障碍是重新创建IIS这样做的礼节性重定向:
要求
GET http://localhost/foo HTTP/1.1
Accept: text/html, application/xhtml+xml, */*
Accept-Language: en-US
User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Accept-Encoding: gzip, deflate
Connection: Keep-Alive
Host: ws7-agentry2
IIS响应
HTTP/1.1 301 Moved Permanently
Content-Type: text/html; charset=UTF-8
Location: http://localhost/foo/
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
Date: Fri, 18 Jul 2014 17:09:20 GMT
Content-Length: 147
<head><title>Document Moved</title></head>
<body><h1>Object Moved</h1>This document may be found <a HREF="http://localhost/foo/">here</a></body>
问题是,无论请求中是否包含斜杠,Nancy流水线中的请求对象都是相同的。由于我们无法区分两者,因此在不导致重定向无限循环的情况下,我们无法返回重定向。我们尝试使用url重写来完成此操作,但无济于事,理想情况下,我想获取原始url。
提前致谢
万一其他人需要获得相同的结果,也就是要使html5mode与IE9和NancyFx一起工作,就必须构建一个httpmodule,如本文所示,尽管我相信标题是错误的:
public class CourtesyRedirectModule : IHttpModule {
public void Dispose() {}
public void Init(HttpApplication context) {
context.BeginRequest += context_BeginRequest;
}
private void context_BeginRequest(object sender, EventArgs e) {
if (HttpContext.Current.Request.Url.PathAndQuery.Equals(HttpContext.Current.Request.ApplicationPath))
HttpContext.Current.Response.Redirect(HttpContext.Current.Request.ApplicationPath + "/");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句