Я искал решение этой проблемы более 10 часов без ответа. В моем приложении я использую атрибут [requirehttps]. Когда вы нажимаете на метод действия, украшенный этим атрибутом, я получаю «не могу отобразить веб-страницу» в IE. После того, как я перебрался в эту проблему, я увидел, что я получал бесконечные 302 звонка в Fiddler, что в конечном итоге приведет к таймауту и вызовет эту ошибку. создать пользовательский атрибут и физически создать https-вызов.Я использую IIS Express и успешно создал сертификат и привязал порт.Если я вызываю этот URL-адрес непосредственно через браузер, все работает нормально.Это код, который я использовал для перенаправления запрос.MVC3 Redirect Loop
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