Domanda

Per rendere più semplice per una webapp per condividere file con un'altra applicazione su un server diverso, sto usando un tag href di base nella mia pagina master. Come molte persone hanno scoperto, questa si rompe percorsi webform. Ho una classe adattatore modulo di lavoro, ma non sono sicuro di come ottenere il percorso assoluto l'url. Attualmente, il mio programma è codificato da usare qualcosa di simile a:

HttpContext Context = HttpContext.Current;
value = "http://localhost" + Context.Request.RawUrl;

Vale la pena notare che sto testando sul mio server IIS locale, quindi non c'è una strana tendenza per un sacco di cose che ho provato ad utilizzare in modo ciò che il percorso assoluto non includono il nome di dominio (il mio IIS locale non è visibile dall'esterno). Il che significa che non è un percorso assoluto e quindi il href base si romperebbe.

C'è un buon modo per gestire questa in modo tale che esso funzionerà localmente senza hardcoding ma funziona anche correttamente quando caricato su un server? Preferirei evitare tutto ciò che comporta fare qualcosa di diverso sulla copia sul lato server.

Sì, mi rendo conto che avrei potuto usare i file web.config separata a livello locale e sul server per ottenere queste informazioni, ma questo è brutto e viola SECCO.

È stato utile?

Soluzione

Ho usato questo in passato:

// Gets the base url in the following format: 
// "http(s)://domain(:port)/AppPath"
HttpContext.Current.Request.Url.Scheme 
    + "://"
    + HttpContext.Current.Request.Url.Authority 
    + HttpContext.Current.Request.ApplicationPath;

Altri suggerimenti

Old post, ma qui è un altro metodo un po 'meno verbose

var baseUri = new Uri(HttpContext.Current.Request.Url, "/");

L'ho usato in seguito e ha funzionato per me sia per client e il server.

string surl = string.Format("{0}://{1}",
    HttpContext.Current.Request.Url.Scheme,
    HttpContext.Current.Request.Url.Authority);

Codice:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top