Frage

Um es einfacher für eine Webapp zu machen Dateien auf einem anderen Server mit einer anderen App zu teilen, ich bin mit einem base href-Tag in meiner Masterseite. Wie viele Menschen haben entdeckt, bricht diese webform Pfade. Ich habe eine Arbeits Formular Adapter Klasse aber bin nicht sicher, wie den absoluten Pfad der URL zu erhalten. Derzeit ist mein Programm fest einprogrammiert so etwas wie zu verwenden:

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

Es ist erwähnenswert, dass ich zur Zeit auf meinem lokalen IIS-Server bin Tests, so gibt es eine seltsame Tendenz für eine Menge Dinge, die ich versucht habe, um mit, was der absolute Pfad enthält nicht die Domänennamen (meine lokale IIS ist von außen nicht sichtbar). Das bedeutet, es ist nicht ein absoluter Pfad und damit die Basis href wird es zerstören.

Gibt es eine gute Möglichkeit, dies so zu behandeln, dass sie vor Ort arbeiten, ohne zu sondern auch richtig, wenn auf einen Server hochgeladen? Ich würde es vorziehen, alles zu vermeiden, dass etwas anderes auf der serverseitigen Kopie beinhaltet tun.

Ja, merke ich, ich separate Dateien Web.config lokal verwenden könnte und auf dem Server auf diese Informationen zu bekommen, aber das ist hässlich und verletzt DRY.

War es hilfreich?

Lösung

Ich habe dies in der Vergangenheit verwendet:

// 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;

Andere Tipps

Alte Post, aber hier ist eine andere etwas weniger ausführlich Methode

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

Ich habe verwendet folgende und es funktionierte sowohl für mich als Client und Server.

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

Code:

string loginUrl = Request.Url.GetLeftPart(UriPartial.Authority) + VirtualPathUtility.ToAbsolute("~/") + "Login/Login.aspx?UserName=" + LoggedinUser["UserName"] + "&Password=" + LoggedinUser["Password"];
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top