2011-05-18 129 views
3

我在網站上有一個通用的處理程序。當我直接進入它時,它立即響應。當我嘗試從.Net程序中獲得它時,在服務器註冊請求之前會有一段很長的(10秒鐘的停頓)暫停。ASP.Net延遲,我該如何判斷它是客戶端還是服務器?

下面是我用打服務器的代碼:

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://MYURL/fs.ashx"); 
request.Method = "POST"; 
request.ContentType = "text/xml"; 

// This is the line that takes 10 seconds to return 
StreamWriter streamOut = new StreamWriter(request.GetRequestStream(), System.Text.Encoding.ASCII); 

streamOut.Write(sXMLToSend); 
streamOut.Close(); 
XmlDocument doc = new XmlDocument(); 
HttpWebResponse resp = null; 
resp = (HttpWebResponse)request.GetResponse(); 
StreamReader responseReader = new StreamReader(resp.GetResponseStream(), Encoding.UTF8); 
sResponse = responseReader.ReadToEnd(); 
Console.WriteLine(sResponse); 
resp.Close(); 

我不認爲這條線之前採取的是長大約一個星期,但我沒有任何數據回來了。任何想法可能是什麼問題?如果我在瀏覽器中點擊了網址,它會立即回覆是否有任何工具可以用來判斷它是我的機器還是服務器,或者......我甚至不知道從哪裏開始。

+1

只是瘋狂的猜測,你用'http://'試過嗎?也許應用程序試圖獲取/驗證瀏覽器保持緩存的證書。 – SirViver 2011-05-18 18:19:21

+0

嘗試做'var requestStream = request.GetRequestStream()'看看是否需要這麼長時間;如果是這樣,你可以縮小搜索範圍。 – 2011-05-18 18:19:38

+0

@Bala R var requestStream ...引起相同的延遲。我確信我錯過了一些明顯的東西,但是這是如何縮小搜索範圍的?我知道它至少消除了創建StreamWriter所需的開銷,但除此之外......我知道我必須錯過一些東西。 – 2011-05-18 18:37:48

回答

1

可能只是因爲GetRequestStream是一個同步方法,並且在返回之前將其全部緩衝起來?也許你應該嘗試調用異步版本並處理數據。

+0

Ali會很高。我不這麼認爲 - 在推遲的時候,我甚至沒有發送XML文檔(通過POST)。所以,這不像我的代碼正在等待響應。 – 2011-05-24 01:17:27

相關問題