2010-03-17 45 views
3

長話短說的API我打電話的不同環境(開發/分期/ UAT /火線)是通過將主機記錄的服務器上,以便在現場域解析設置他們的另一臺服務器爲HTTP請求。HttpWebRequest的不同的IP比域名解析爲

的問題是,他們已經與我們沒有足夠的服務器再使用服務器級的主機文件就這麼多不同的環境做到了這一點(我們已經有了逃跑的相同服務器的一些環境 - 幸運的是沒有開發和生活雖然:P)。

我不知道是否有辦法讓某個域的WebRequest請求,但明確指定它應該連接到服務器的IP?或者有沒有什麼辦法可以做到這一點,一直到套接字連接(我真的不想浪費時間/嘗試重新實現HTTP協議來創建錯誤)。

PS:我試過了,我們不能只爲每個環境獲得一個新的子域。欺騙一個HTTP主機頭

+0

爲什麼你就不能在要求中指定的IP地址? – Ragesh 2010-03-18 03:18:09

+0

您是否嘗試過在Uri中使用IP地址,然後設置主機頭? – Foole 2010-03-18 03:40:46

+0

Ragesh,服務器只會迴應,如果主機頭是正確的(他們的網絡服務器正在專門偵聽該域名,不解決它),所以如果我只是使用IP地址它不會正確響應。 Foole,我試過了,但HttpWebRequest上的主機頭不會讓你設置它(也就是說'request.Headers [「Host」] =「www.example.com」'拋出異常) – fyjham 2010-03-18 05:31:15

回答

1

一種方式是代理設置爲你想要發送到請求的實際服務器。像

request.Proxy = new WebProxy(string.Format("http://{0}/", hostAddress)); 

可能很好的工作。

+0

謝謝...這是很久以前,我忘記了我們完成的實際解決方法,但我相信這實際上是我們如何做到的。但我認爲webproxy採用IP:端口而不是http協議。我會標記這個權利,所以如果有其他人在尋找他們可以找到它(當我最初找到一個解決方案時忘了提供答案)。 – fyjham 2010-07-28 04:52:40

+0

不用擔心。在drive-by搜索中發現此問題... ;-) – 2010-07-28 05:54:36

0

有辦法控制配置值。

  1. 您在.NET中啓用了條件編譯,您可以在其中創建配置集並創建可使用特定域而不是更改其分辨率策略的指令。例如,在調試中,您可以使用x.com,在發佈模式下,您可以使用y.com,無論您需要引用網址。
  2. 的Web.config和App.config中現在支持的變化按照選定的配置,你可以有web.debug.config和web.release.config,你可以在這裏指定不同的URL引用。
+0

您似乎完全誤解了這個問題,更改配置不會有任何幫助,因爲這兩個Web服務器都希望從它們請求相同的HOST頭,但它只能解決其中之一。所以它不是x.com和y.com,它們都是x.com。 – fyjham 2010-07-28 04:48:59

+0

我知道,但是當我們根據我們需要的配置部署不同主機頭的不同Web服務器時,無論如何,我認爲Jeremy的回答適合您。 – 2010-07-28 10:51:36