我一直在尋找這個問題的解決方案超過10個小時沒有答案。在我的應用程序中,我使用[requirehttps]屬性。當點擊一個用這個屬性裝飾的action方法時,我會在IE中看到「無法顯示網頁」,在深入研究這個問題之後,我發現我在Fiddler中接收到無限次的302調用,最終超時並導致錯誤。創建一個自定義屬性並物理創建https呼叫我使用IIS Express併成功創建了一個證書並綁定了端口如果我直接通過瀏覽器調用這個URL,一切正常,這是我用來重定向請求。MVC3重定向循環
public class HttpsAttribute : System.Web.Mvc.RequireHttpsAttribute
{
public bool RequireSecure = false;
public override void OnAuthorization(System.Web.Mvc.AuthorizationContext filterContext){
var builder = new UriBuilder(HttpContext.Current.Request.Url);
if (RequireSecure){
// redirect to HTTP version of page
builder.Scheme = Uri.UriSchemeHttps;
builder.Port = 44300;
filterContext.Result = new RedirectResult(builder.Uri.ToString());
}
else{
// non secure requested
if (filterContext.HttpContext.Request.IsSecureConnection){
HandleNonHttpRequest(filterContext);
}
}
}
protected virtual void HandleNonHttpRequest(AuthorizationContext filterContext){
if (String.Equals(filterContext.HttpContext.Request.HttpMethod, "GET", StringComparison.OrdinalIgnoreCase)){
// redirect to HTTP version of page
string url = "http://" + filterContext.HttpContext.Request.Url.Host + filterContext.HttpContext.Request.RawUrl;
filterContext.Result = new RedirectResult(url);
}
}
}
當我設置一個斷點,找出建設者值是什麼,它是正確的,而且我們是從這裏我得到一個無限重定向循環。奇怪的是,第一個請求是永遠正確當我查看瀏覽器中的URL時。就好像UriBuilder沒有發送正確的URL。有任何想法嗎?這讓我瘋狂。
你說的無限重定向循環是什麼意思? – ataravati