2009-11-04 2 views
1

내 ASP.NET 2.0 웹 서비스에서 일부 텍스트를 번역하기 위해 Google API에 액세스하려고합니다. -IIS 6.0에서 .NET WebRequest로 시간 초과

이 잘 한 나는 ASP.NET 개발 서버 나처럼 작동

string result = ""; 

// create the web request to the Google Translate REST interface 
System.Net.WebRequest oRequest = System.Net.WebRequest.Create("http://ajax.googleapis.com/ajax/services/language/translate?v=1.0&q=" 
    + System.Web.HttpUtility.UrlEncode("Text to translate") + "&langpair=" + "en" + "%7C" + "fr"); 

// make the web call 
System.Net.WebResponse oResponse = oRequest.GetResponse(); 

// grab the response stream 
System.IO.StreamReader oReader = new System.IO.StreamReader(oResponse.GetResponseStream()); 

// put the whole response in a string 
string sContent = oReader.ReadToEnd(); 

// parse the string into the litJSON simple object model 
JsonData oData = JsonMapper.ToObject(sContent); 

// write out the translated text 
result = oData["responseData"]["translatedText"].ToString(); 

(>http://litjson.sourceforge.net JsonData는 DLL LitJson에서이다) : 코드를 따르는 것은이 권리를 않습니다. 그러나 IIS 6.0 서버에 웹 서비스를 설치하자마자 클라이언트에서 "작업 시간 초과"오류가 발생합니다.

System.Net.WebClient를 사용하면 동일한 시간 초과가 발생합니다.

웹 요청을 금지하는 IIS에 대한 설정이 있습니까?

+1

아직 확인하지 않은 경우 IIS 6.0 서버에서 http://ajax.googleapis.com에 액세스하거나/ping 할 수 있는지 확인하십시오. – Vivek

답변

0

개발 웹 서버에서 제한 시간은 무한으로 설정됩니다. IIS6으로 이동하면 시간 제한 값이 존중되고 요청이 기본값보다 오래 걸리고 시간이 초과됩니다. oRequest 개체 (System.Net.HttpWebRequest 개체)에서 Timeout 속성을 설정하여 제한 시간 값을 변경할 수 있습니다. 기본 제한 시간은 100,000 밀리 초 (100 초)입니다.

oRequest.Timeout = 300000; //300,000 milliseconds or 300 seconds or 5 minutes 
+0

하지만 내 요청은 Google 번역에 있으므로 1 초 정도 걸릴 것입니다 ... 왜 그렇게 긴 시간 초과 값이 필요합니까? 시간 제한이 100 초 밖에되지 않지만 요청이 100 초 이상 지속되므로 시간 초과에 도달하지는 않습니다. – Julien

+0

그런 경우 Fiddler와 같은 도구를 사용하여 개발 웹 서버에서 보낸 헤더를보고 IIS에서 보낸 헤더와 비교하십시오. Google 번역사에서보고 싶어하는 헤더 (예 : 사용자 에이전트)가있을 수 있습니다. –

관련 문제