2016-11-09 317 views
0

我正面臨着這個奇怪的問題。我被要求做一個poc。所以我做了一個快速和骯髒的應用程序(控制檯應用程序)。我要打一個網址並解析某些響應的一部分。讓我們假設這個網址是www.google.co.uk。我在控制檯程序上的代碼運行良好。之後,我將它移植到我的web應用程序(它運行在asp.net 4.5,web api控制器方法上)。現在,只要嘗試點擊網址,就會立即發出提供錯誤的相同代碼。其代碼如下無法連接到遠程服務器:由於目標計算機主動拒絕,無法建立連接

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(new Uri(contentDeliveryURL)); 
request.CookieContainer = cookieContainer; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 

錯誤是:無法連接到遠程服務器:無連接可以作出,因爲目標機器積極地拒絕我

它未能對的GetResponse() Web Api控制器上的方法。現在我知道它與代理有關,因爲當我試圖打到一個內部託管的URL(在我們的公司網絡內)時,代碼運行良好。我的問題是爲什麼在桌面應用程序中,我沒有提供任何代理信息,但在網絡中我需要?桌面應用程序如何讀取代理信息?還我elavated應用程序池標識使用我的帳戶在Web應用程序,它仍然沒有工作(如果你給我的建議有關更改用戶其下的應用程序池正在運行)

回答

1

應用程序讀取默認的代理設置哪些綁定到用戶的配置文件。 (通過IE以交互方式設置它的最簡單的方法。).NET應用程序支持該設置,並且許多其他應用程序都支持像Fiddler,Chrome,FF等一樣的設置。實際上,可以考慮不遵守該設置的應用程序不相容。 (例如Java應用程序)

捕獲是「綁定到用戶的配置文件」。因此,在不需要的特殊用戶帳戶下運行的服務具有與交互式用戶相同的設置。 (或根本沒有設置)

最安全的解決方案是通過代碼爲您的.NET http類設置代理。當然你可以從配置文件讀取它,而不是硬編碼。

相關問題