2012-04-21 7 views
0

私は、30分ごとにアクションを実行し、特定の条件が満たされた場合に電子メールを送信する必要のあるASP.NETアプリケーションを作成しています。私は、[LocalOnly]属性でそのアクションに投稿するプログラムを実行するために、サイトをホストするシステム上でスケジュールされたWindowsタスクを取得しています。これは、http:// localhost:[Port]/[Controller]/[Action]にリクエストを送信するだけで済むので、開発中にテストしているときには素晴らしいことです。しかし、いったんサイトを展開すると、要求にパブリックドメイン名を使用するとインターネット経由でルーティングされます。つまり、IPはローカルではなくなり、処理が失敗します。複数のWebサイトをホストするシステムでlocalhostアドレスを見つける方法

このリクエストをローカルに提出する方法はありますか?サイトの公開ドメイン名やIPの代わりに使用できるローカルホストアドレスを把握する方法がいくつかあると私は思っています。

...または30分ごとに電子メールを送信するより良い方法がありますか?

+0

'localhost'は' 127.0.0.1'(IPv6が有効な場合は ':: 1')を指している必要があります。ホストが誤って構成されていない限り、間違いなくローカルアドレスにする必要があります。 – Piskvor

+0

ええ、でも、それを使って私が望む1つのサイトにアクセスするにはどうすればいいですか?このサーバーは複数のホストを持ち、私が望むものに到達する方法を知らない。 –

+0

そのアドレスにHTTPリクエストを送信し、 'Host:'ヘッダを目的のドメインに設定します。 – Piskvor

答えて

0

これは、IISの展開サーバーで一意のポートバインディングを作成することで実行できます。

実行中のサービスに対してこのポート番号を設定します(または、スケジュールされたタスクにコマンドラインパラメータとして渡します)。

あなたの呼び出しをhttp://127.0.0.1:[PortThatWasPassedIn]/[Controller]/[Action]に更新してください。

これがうまくいくと、歓声が上がります。

+0

あなたは正しいです。私はバインディングを追加し、それは働いた。 –

関連する問題