2010-07-19 224 views
3

我需要從C#中調用一個Response.Redirect方法,但我需要這樣做,它會忽略此調用的Windows上的主機文件?忽略hosts文件?

例如,如果在主機上,我有:

127.0.0.1 google.com

,我叫的Response.Redirect( 「google.com」),我需要它忽略主機爲這一個電話,實際上去google.com而不是localhost。我怎麼能這樣做?

我知道我可以在谷歌的IP地址上調用Response.Redirect,但有沒有更好的方法?

+0

「我知道我可以在谷歌的IP地址上調用Response.Redirect」 - 你將如何知道該IP地址是什麼?在主機中具有該條目的系統上,它總是會告訴你127.0.0.1。 – AakashM 2010-07-19 12:12:01

+0

@AakashM:好吧,你*可以*打開一個套接字,自己對DNS服務器進行一次'A'查詢(如果你不打擾系統設置,試試谷歌的8.8.8.8),解析返回的數據,瞧吧IP地址。換句話說,繞過操作系統的DNS解析器並自己動手。正如你所看到的,沒有涉及'hosts'文件;重塑車輪OTOH,這可能有點問題。 – Piskvor 2010-07-19 12:15:45

+0

@Piskvor哇是的,那可以工作。但是,如果我看到一個應用程序成功地定位谷歌,而我有我的主機文件中的條目,我會...... *驚訝*,至少可以說:) – AakashM 2010-07-19 12:26:06

回答

2

忽略hosts文件的唯一方法是刪除它。

+0

或者註釋掉違規行。無論如何,除了操作系統的解析器之外,一些程序(例如網頁瀏覽器)還保留着自己的DNS緩存,所以對「主機」的更改不能保證立即「採取」。 – Piskvor 2010-07-19 12:26:08

3

不,可能不是:DNS查找交給您的操作系統,它檢查... hosts文件。

IFF可以

  • 查找IP地址,而不OS的解析器
  • 目標服務器接受IP地址,而不是主機名(有些Web服務器會拒絕爲http://10.15.6.4/some/path(谷歌搜索接受的IP主機名和作品,順便說一句)),

那麼它可能會工作。

0

如果你可以在不詢問操作系統的情況下知道主機的IP地址(例如通過第三方),那麼你實際上忽略了主機文件。