2010-12-01 16 views
1

私はクライアントにダウンロードリンクを持つ電子メールを送信して、ユーザーがクリックして直接ダウンロードする方法を書こうとしています。ASP.Netはlocalhostではなくドメイン名を取得しますか?

実際には、ファイルをFTPサーバーに送信し続けるグローバルで連続して実行されるプロセスとしてエミュレートしています。送信にエラーがある場合は、ファイルをダウンロードできるようにリンクが管理者に送信されます直接。

私の質問は、どうすれば外部リンクを得ることができるのですか?たとえば、私はhttp://www.abc.com/temp/file.txtを持っています。私は汎用的なソリューションを望んでいますので、ドメインを変更して私のサーバーも変えても、コードはまだ動作しますか?

ありがとうございました

+0

がどのようにこのサービスがに関係ないMicrosoft.Web.Administrationアセンブリと、いくつかのサイトに定義されたドメイン(IISバインディング)を取得することができますサーバ? –

+0

それはサーバーの一部ですか?実際に私はFTPサーバーにファイルを送信し続けるグローバルで継続的に実行されているサービスとしてそれを模倣しています。もし送信にエラーがある場合は、ファイルを直接ダウンロードするために管理者にリンクが送信されます。 – Leo

答えて

2

ASP.NETは、技術的にエントリドメインが何であるかを「知っている」わけではありません。それが気にしているのは、アプリケーションです。これは、ユーザーが入ってくる権限とほぼ直交しています。リクエストスレッドのコンテキストでは、ユーザがおそらく要求したドメインを知っていますが、それだけです。

Control.ResolveUrl("~/path_to_file");を使用してサーバーの相対パスを取得することができます。そこから、ドメインが何であるべきかを決定するいくつかの構成主導の方法が必要になります。

+0

これは、設定ファイルからの読み込みやユーザーからの取得以外の方法は絶対にありませんか? – Leo

+1

@ケニーか、構成されたホストヘッダードメインをIISメタベースから読み取って、何らかの方法で正しいホストヘッダードメインを選択してください。 Configは私には簡単に聞こえます:) –

1

は、私は完全に質問を理解していることを確認していないが、IIS 7の上に、あなたは

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

} 


関連する問題