2010-12-01 4 views
1

J'essaye d'écrire une méthode qui enverra un email au client qui a un lien de téléchargement que l'utilisateur peut cliquer pour télécharger directement. En fait, je l'émule comme un processus continuellement en cours dans Global qui continue à envoyer un fichier à un serveur ftp, s'il y a une erreur avec l'envoi, un lien sera envoyé à l'administrateur pour qu'il puisse télécharger le fichier directement.ASP.Net obtenir le nom de domaine pas le localhost?

Ma question est comment puis-je obtenir le lien externe, par exemple je voudrais avoir http://www.abc.com/temp/file.txt. Je veux une solution générique pour que, quel que soit le domaine, je change de serveur, le code fonctionne toujours?

Merci

+0

Comment ce service ne se rapporte à la serveur? –

+0

cela fait partie du serveur? En fait, je l'émule comme un service en cours d'exécution dans Global qui continue à envoyer un fichier à un serveur FTP, s'il y a une erreur avec l'envoi, un lien sera envoyé à l'administrateur pour télécharger le fichier directement. – Leo

Répondre

2

ASP.NET ne « sait » pas techniquement ce que les domaines d'entrée sont. Tout ce qui l'intéresse, ce sont les applications, qui sont pour la plupart orthogonales à l'autorité de l'utilisateur. Dans le contexte d'un thread de demande, il sait quel domaine l'utilisateur a probablement demandé, mais c'est tout.

Vous pouvez obtenir le chemin relatif au serveur en utilisant (entre autres choses) Control.ResolveUrl("~/path_to_file"); - à partir de là, vous aurez besoin d'un moyen config-driven de déterminer ce que le domaine devrait être.

+0

donc cela signifie qu'il n'y a absolument aucun autre moyen en plus de lire à partir du fichier de configuration ou de l'obtenir de l'utilisateur Demande? – Leo

+1

@Kenny ou en lisant les domaines d'en-tête d'hôte configurés hors de la métabase IIS et en choisissant d'une manière ou d'une autre le bon. La config semble plus facile pour moi :) –

1

Je ne suis pas sûr que je comprends tout à fait question, mais sur IIS 7, vous pouvez obtenir des domaines (IIS) Fixations définies pour certains sites avec l'ensemble de Microsoft.Web.Administration

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

} 


Questions connexes