2012-01-31 83 views
1

我試圖在ASP.NET MVC 3應用程序中執行編程HTTP POST。目的是模仿表單提交。WebRequest.GetResponseStream()在ASP.NET MVC 3項目中失敗

我用下面的代碼(爲了保密略有修改):

string input = "foo=bar"; 
byte[] data = Encoding.UTF8.GetBytes(input); 

var request = (HttpWebRequest)WebRequest.Create("http://my.domain.com/endpoint"); 

request.ContentLength = data.Length; 
request.ContentType = "application/x-www-form-urlencoded"; 
request.Method = "POST"; 

using (var stream = request.GetRequestStream()) { 
    stream.Write(request); 
    stream.Close(); 
} 

var response = request.GetResponse(); 

// get the response data, do backflips, save the world 

的問題是,我得到了.GetRequestStream()通話過程中發生錯誤,說我無法連接到URL資源。

但是,如果我在控制檯應用程序中插入完全相同的代碼,我可以很好地連接。一位同事也設法在WCF服務應用程序中使用相同的代碼進行連接。

這使我瘋狂。任何幫助,將不勝感激。

+3

第一個明顯的區別是與控制檯應用程序相關的安全性和站點不同。嘗試擺弄你的安全配置文件 - 你運行什麼類型的用戶?看看是否有幫助 – 2012-01-31 09:45:08

+0

還請確保該用戶有權在防火牆(端口80)中進行該呼叫。 – 2012-01-31 09:47:26

+0

@rangitatanz〜是的,也想到了 - 這就是爲什麼有WCF服務應用程序測試。但絕對會更多地考慮這一點。 – 2012-01-31 09:51:28

回答

0

這聽起來像是一個安全問題。

要解決嘗試以下操作:

  • 撥弄你的asp.net運行的安全上下文。
  • 確保防火牆設置正確 - 嘗試禁用它進行快速檢查。
  • 回落到使用ASP.net開發服務器來測試[;)

如果這並不工作,那麼能否請您例如添加更多信息提琴手日誌,堆棧跟蹤。