Sto testando un nuovo sito di gestione temporanea con bilanciamento del carico e https è impostato a livello di bilanciamento del carico, non a livello di sito. Inoltre, questo sito sarà sempre https quindi non ho bisogno di remote richiede attributi https ecc. L'url mostra https ma non è disponibile nel mio codice. Ho alcuni problemi a causa di questo motivoRequest.Url.Scheme fornisce http invece di https sul sito con bilanciamento del carico
Request.Url.Scheme è sempre http:
public static string GetProtocol()
{
var protocol = "http";
if (HttpContext.Current != null && HttpContext.Current.Request != null)
{
protocol = HttpContext.Current.Request.Url.Scheme;
}
return protocol;
}
Stessa cosa con questo URL di base, il protocollo è http
public static string GetBaseUrl()
{
var baseUrl = String.Empty;
if (HttpContext.Current == null || HttpContext.Current.Request == null || String.IsNullOrWhiteSpace(HttpRuntime.AppDomainAppPath)) return baseUrl;
var request = HttpContext.Current.Request;
var appUrl = HttpRuntime.AppDomainAppVirtualPath;
baseUrl = string.Format("{0}://{1}{2}", request.Url.Scheme, request.Url.Authority, appUrl);
if (!string.IsNullOrWhiteSpace(baseUrl) && !baseUrl.EndsWith("/"))
baseUrl = String.Format("{0}/", baseUrl);
return baseUrl;
}
Ora il problema più grande fa riferimento ai file js e ai caratteri google a cui si fa riferimento nei fogli di stile. Sto usando // qui senza http o https ma questi sono trattati come http e vedo il messaggio bloccato di contenuto misto in FireBug.
Come posso risolvere questo problema?
È bilanciamento del carico che chiude la connessione HTTPS e connettersi ai singoli server Web con http? Alcuni load balancer lo fanno per scaricare l'elaborazione https. –
Sì. È un bilanciatore del carico Barracuda. –