2010-12-01 6 views
1

Ich versuche, eine Methode zu schreiben, die eine E-Mail an den Client sendet, die einen Download-Link hat, auf den der Benutzer klicken kann, um direkt herunterzuladen.ASP.Net den Domain-Namen nicht den localhost bekommen?

Eigentlich emulieren ich es als ein kontinuierlich laufender Prozess in Global, die eine Datei an einen FTP-Server senden, wenn es einen Fehler beim Senden gibt, wird ein Link an den Administrator gesendet, damit er die Datei herunterladen kann direkt.

Meine Frage ist, wie bekomme ich den externen Link, zum Beispiel möchte ich http://www.abc.com/temp/file.txt haben. Ich möchte eine generische Lösung, damit der Code trotz der Domäne, die ich auch auf meinem Server ändere, immer noch funktioniert?

Dank

+0

Wie funktioniert dieser Dienst auf die Beziehung definiert erhalten Server? –

+0

es ist ein Teil des Servers? eigentlich emimiere ich es als einen ständig laufenden Dienst in Global, der weiterhin eine Datei an einen FTP-Server sendet, wenn beim Senden ein Fehler auftritt, wird ein Link an den Administrator gesendet, um die Datei direkt herunterzuladen. – Leo

Antwort

2

ASP.NET „wissen“ nicht technisch, was die Eintragung Domänen sind. Alles, was es interessiert, sind Anwendungen, die meist orthogonal zu der Autorität sind, auf die der Benutzer hereinkommt. Im Kontext eines Anforderungs-Threads weiß er, von welcher Domäne der Benutzer wahrscheinlich verlangt hat, aber das ist alles.

Sie können den Server-relativen Pfad mit (unter anderem) Control.ResolveUrl("~/path_to_file"); - von dort, Sie benötigen einige Config-driven Art der Bestimmung, was die Domäne sein sollte.

+0

also bedeutet dies, dass es absolut keinen anderen Weg gibt, als aus der Konfigurationsdatei zu lesen oder sie von einem Benutzer zu bekommen. – Leo

+1

@Kenny oder Lesen der konfigurierten Host-Header-Domänen aus der IIS-Metabasis und irgendwie die richtige aus dem auswählen. Die Konfiguration klingt für mich einfacher :) –

1

Ich bin nicht sicher, dass ich die Frage verstehen vollständig, aber auf IIS 7 können Sie Domänen (IIS-Bindungen) für einige Website mit Microsoft.Web.Administration Montage

 
ServerManager sman = new ServerManager();  
foreach (Site iisSite in sman.Sites) 
{ 
    foreach (Binding bind in iisSite.Bindings) 
    { 
    // bind.Host - here is the site domain 
    } 

} 


Verwandte Themen